Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как грамотно перенести БД на другой хостинг?
 
 автор: Лена Смирнова   (10.04.2009 в 13:19)   письмо автору
 
 

Делаю экспорт, но на другом хостинге постоянно ошибки при импорте (((
Видать разные версии или еще что-то... Как с этим бороться?

  Ответить  
 
 автор: Trianon   (10.04.2009 в 23:25)   письмо автору
 
   для: Лена Смирнова   (10.04.2009 в 13:19)
 

анализировать ошибки и определить причины их возникновения.
причин может быть масса:
сильное отличие версий ( до и после 4.1)
отсутствие указания кодировки дампа при импоре ( или отсутствие оператора SET NAMES в самом дампе)
некорректная кодировка текста в дампе
некорректная кодировка полей таблиц в дампе
некорректная кодировка БД, в которую выполняется импорт.
ограничения клиента импорта на размер дампа
ограничения сервера импорта на размер SQL-операторов

  Ответить  
 
 автор: Лена Смирнова   (14.04.2009 в 23:18)   письмо автору
 
   для: Trianon   (10.04.2009 в 23:25)
 

Есть таблица, в операциях в phpmyadmin в сравнении стоит cp1251. В самой таблице хранится в utf8.
Делаю экспорт, прописываю /*!40101 SET NAMES cp1251 */;
Далее импортирую на другой сервер, при вывод на сайте появляется ???????? вместо слов

  Ответить  
 
 автор: Trianon   (15.04.2009 в 00:09)   письмо автору
 
   для: Лена Смирнова   (14.04.2009 в 23:18)
 

>Есть таблица, в операциях в phpmyadmin в сравнении стоит cp1251. В самой таблице хранится в utf8.
>Делаю экспорт,...

После этого, очевидно, нужно исправлять дамп?
Или Вы полагаете, что когда сами данные в utf8, а кодировка бд, таблиц, полей указана как cp1251 - это нормально?

Можно попробовать снять дамп в режиме совместимости с MySQL 4.0 .
При этом, насколько я помню, все указания о кодировках из дампа убираются ( т.к. версия 4.0 и ниже с кодировками не работает)

А после этого уже прописать SET NAMES . И даже не SET NAMES а SET CHARACTER SET .
И не cp1251 , а ту кодировку, в которой окажется текст в дампе.

И кодировку БД импорта установить правильно. Перед импортом.

  Ответить  
 
 автор: Лена Смирнова   (15.04.2009 в 00:32)   письмо автору
 
   для: Trianon   (15.04.2009 в 00:09)
 

Попробовала не помогает (((

  Ответить  
 
 автор: Uzer44   (15.04.2009 в 03:35)   письмо автору
 
   для: Лена Смирнова   (15.04.2009 в 00:32)
 

Как вариант вам могу предложить такой способ он правда добавляет 1 запрос к БД но имхо работает в таких случаях.
1). Залить дамп в вашу новую БД
2). Найти в вашем скрипте строку которая открывает соединение с БД mysql_connect
3). Ниже по коду смотрите условие успешного подключения.
4). Вставляйте один из этих кодов:
mysql_query ('SET NAMES CP1251'); 
mysql_query ('SET CHARACTER SET CP1251');

Где CP1251 кирилица windows 
Пробуйте разные кодировки к примеру если предпологаеш что там UTF-8,
заменяеш CP1251 на UTF-8


Такая фишка реально помогает :-)

  Ответить  
 
 автор: Лена Смирнова   (15.04.2009 в 21:22)   письмо автору
 
   для: Uzer44   (15.04.2009 в 03:35)
 

Вы вариант работает, но у меня огромное кол-во файлов и запросов в них... не могу я физически перед каждым запросом вставлять mysql_query ('SET NAMES CP1251');
mysql_query ('SET CHARACTER SET CP1251');
Может есть еще способы?

  Ответить  
 
 автор: Trianon   (15.04.2009 в 21:28)   письмо автору
 
   для: Лена Смирнова   (15.04.2009 в 21:22)
 

вообще-то вызов этого оператора ставится один раз, в файл, который устанавливает соединение с сервером ( mysql_connect() ) и выбирает бд (mysql_select_db()) .

  Ответить  
 
 автор: Лена Смирнова   (15.04.2009 в 21:52)   письмо автору
 
   для: Trianon   (15.04.2009 в 21:28)
 

Да, верно... работает, но тогда при новом сохранении в БД опять ???????? вместо текста ((( Может просто всетаки, есть способ ипортировать нормально?

  Ответить  
 
 автор: Trianon   (15.04.2009 в 22:24)   письмо автору
 
   для: Лена Смирнова   (15.04.2009 в 21:52)
 

Вероятно, потому, что кодировка БД и таблиц не совпадает с кодировкой содержимого в них.

А текст в дампе читается? Русский, я имею в виду.

  Ответить  
 
 автор: Лена Смирнова   (15.04.2009 в 23:26)   письмо автору
 
   для: Trianon   (15.04.2009 в 22:24)
 

Я уже пробовала менять читается.

  Ответить  
 
 автор: Trianon   (16.04.2009 в 00:15)   письмо автору
 
   для: Лена Смирнова   (15.04.2009 в 23:26)
 

что показывает запрос
$res = mysql_query("SHOW VARIABLES LIKE '%char%'"); 
while($row = mysql_fetch_row($res)) 
  echo $row[0] . ' = ' . $row[1] ."<br />\r\n"; 

в контексте Вашего конфига?

  Ответить  
 
 автор: Лена Смирнова   (16.04.2009 в 00:32)   письмо автору
 
   для: Trianon   (16.04.2009 в 00:15)
 

character_set_client = latin1
character_set_connection = latin1
character_set_database = cp1251
character_set_filesystem = binary
character_set_results = latin1
character_set_server = latin1
character_set_system = utf8
character_sets_dir = /usr/share/mysql/charsets/

  Ответить  
 
 автор: Trianon   (16.04.2009 в 00:50)   письмо автору
 
   для: Лена Смирнова   (16.04.2009 в 00:32)
 

Отсюда ясно следует, что оператор mysql_query("SET CHARACTER SET 'КодировкаСкрипта'");
в рамках конфига не выполнялся. Почему?

Как выглядит структура какой-нибудь типичной таблицы (SHOW CREATE TABLE ИмяТаблицы) ?

  Ответить  
 
 автор: Trianon   (15.04.2009 в 10:12)   письмо автору
 
   для: Лена Смирнова   (15.04.2009 в 00:32)
 

дамп большой?

  Ответить  
 
 автор: Лена Смирнова   (15.04.2009 в 20:11)   письмо автору
 
   для: Trianon   (15.04.2009 в 10:12)
 

6 метров в zip

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования