The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Проблема с mysqldump + кодировки"
Вариант для распечатки  
Пред. тема | След. тема 
Форум WEB технологии (MySQL)
Изначальное сообщение [ Отслеживать ]

"Проблема с mysqldump + кодировки"  +/
Сообщение от New_Birth (ok) on 25-Июл-11, 13:12 
Добрый день!
Возникла такая проблема. Пытаюсь перенести базу данных с одного mysql сервера на другой. Сайт, использующий эту базу данных - мультиязычный. В конфигах сайта стоит использование кодировки utf8, а также MyISAM. Делаю дамп базы при помощи утилиты mysqldump. Раздампливаю его на новом сервере, меняю в конфигах адрес сервера. Все работает, но вместо русских букв отображаются пустые символы, а вместо арабских и некоторых испанских - знаки вопроса. Как можно обойти эту проблему?
Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Проблема с mysqldump + кодировки"  +/
Сообщение от PavelR (??) on 25-Июл-11, 13:28 
> Добрый день!
> Возникла такая проблема. Пытаюсь перенести базу данных с одного mysql сервера на
> другой. Сайт, использующий эту базу данных - мультиязычный. В конфигах сайта
> стоит использование кодировки utf8, а также MyISAM. Делаю дамп базы при
> помощи утилиты mysqldump. Раздампливаю его на новом сервере, меняю в конфигах
> адрес сервера. Все работает, но вместо русских букв отображаются пустые символы,
> а вместо арабских и некоторых испанских - знаки вопроса. Как можно
> обойти эту проблему?

посмотри на данные на исходном и на целевом серверах через phpMyAdmin.

в современное время чаще всего проблема возникает из-за кривого движка, надеющегося на определенные языковые настройки. В частности, можно сравнить конфиги на серверах, или результирующие  значения переменных.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Проблема с mysqldump + кодировки"  +/
Сообщение от New_Birth (ok) on 25-Июл-11, 13:36 
>[оверквотинг удален]
>> другой. Сайт, использующий эту базу данных - мультиязычный. В конфигах сайта
>> стоит использование кодировки utf8, а также MyISAM. Делаю дамп базы при
>> помощи утилиты mysqldump. Раздампливаю его на новом сервере, меняю в конфигах
>> адрес сервера. Все работает, но вместо русских букв отображаются пустые символы,
>> а вместо арабских и некоторых испанских - знаки вопроса. Как можно
>> обойти эту проблему?
> посмотри на данные на исходном и на целевом серверах через phpMyAdmin.
> в современное время чаще всего проблема возникает из-за кривого движка, надеющегося на
> определенные языковые настройки. В частности, можно сравнить конфиги на серверах, или
> результирующие  значения переменных.

Настройки идентичны. Движок сайта кстати netcat, если это может помочь )

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Проблема с mysqldump + кодировки"  +/
Сообщение от New_Birth (ok) on 25-Июл-11, 13:37 
>[оверквотинг удален]
>>> стоит использование кодировки utf8, а также MyISAM. Делаю дамп базы при
>>> помощи утилиты mysqldump. Раздампливаю его на новом сервере, меняю в конфигах
>>> адрес сервера. Все работает, но вместо русских букв отображаются пустые символы,
>>> а вместо арабских и некоторых испанских - знаки вопроса. Как можно
>>> обойти эту проблему?
>> посмотри на данные на исходном и на целевом серверах через phpMyAdmin.
>> в современное время чаще всего проблема возникает из-за кривого движка, надеющегося на
>> определенные языковые настройки. В частности, можно сравнить конфиги на серверах, или
>> результирующие  значения переменных.
> Настройки идентичны. Движок сайта кстати netcat, если это может помочь )

Еще вопрос. Может быть очень глупый. А можно ли перенести не через дамп, а путем простого копирования файлов БД? И если да, то где эти файлы обычно находятся...

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Проблема с mysqldump + кодировки"  +/
Сообщение от arka on 25-Июл-11, 15:06 
> Еще вопрос. Может быть очень глупый. А можно ли перенести не через
> дамп, а путем простого копирования файлов БД? И если да, то
> где эти файлы обычно находятся...

Обычно /var/db/mysql, но для верности надо просмотреть файл запуска mysql-server

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Проблема с mysqldump + кодировки"  +/
Сообщение от Дядя_Федор on 25-Июл-11, 15:07 
> Еще вопрос. Может быть очень глупый. А можно ли перенести не через
> дамп, а путем простого копирования файлов БД? И если да, то
> где эти файлы обычно находятся...

Можно - в случае MyISAM. По дефолту /var/lib/mysql (пусть указан в my.cnf). Каждая директория - база. Каждая таблица представлена 3-мя файлами - .MYD, .MYI, .frm. Хотя возможны "нюансы" (=проблемы) при подобной попытке копирования. Можно использовать скрипт mysqlhotcopy. По поводу кодировок - при обратной заливке в базу дампа нужно указать кодировку, в которой лить - --default-character-set= для mysql. Как-то так. Я давно этим заморачивался - вроде получалось. Кроме того, уже готовый дамп можно переконвертировать при помощи iconv. И затем указать в самом дампе правильный чарсет.


Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

6. "Проблема с mysqldump + кодировки"  +/
Сообщение от erera22 (ok) on 25-Июл-11, 15:37 
>[оверквотинг удален]
>>>> а вместо арабских и некоторых испанских - знаки вопроса. Как можно
>>>> обойти эту проблему?
>>> посмотри на данные на исходном и на целевом серверах через phpMyAdmin.
>>> в современное время чаще всего проблема возникает из-за кривого движка, надеющегося на
>>> определенные языковые настройки. В частности, можно сравнить конфиги на серверах, или
>>> результирующие  значения переменных.
>> Настройки идентичны. Движок сайта кстати netcat, если это может помочь )
> Еще вопрос. Может быть очень глупый. А можно ли перенести не через
> дамп, а путем простого копирования файлов БД? И если да, то
> где эти файлы обычно находятся...

Снимаем дамп: mysqldump -uuser -ppass --opt db_name > db_name.dump
Накатываем дамп: cat db_name.dump | mysql -uuser -ppass
--default-character-set=utf8 db_name
ну или как многим привычнее:
mysql -uuser -ppass  --default-character-set=utf8 db_name < db_name.dump

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

7. "Проблема с mysqldump + кодировки"  +/
Сообщение от New_Birth (ok) on 25-Июл-11, 15:59 
>[оверквотинг удален]
>>>> результирующие  значения переменных.
>>> Настройки идентичны. Движок сайта кстати netcat, если это может помочь )
>> Еще вопрос. Может быть очень глупый. А можно ли перенести не через
>> дамп, а путем простого копирования файлов БД? И если да, то
>> где эти файлы обычно находятся...
> Снимаем дамп: mysqldump -uuser -ppass --opt db_name > db_name.dump
> Накатываем дамп: cat db_name.dump | mysql -uuser -ppass
> --default-character-set=utf8 db_name
> ну или как многим привычнее:
> mysql -uuser -ppass  --default-character-set=utf8 db_name < db_name.dump

Тогда вместо русских и арабских букв ютфные иероглифы )

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "Проблема с mysqldump + кодировки"  +/
Сообщение от Дядя_Федор email on 25-Июл-11, 19:54 
> Тогда вместо русских и арабских букв ютфные иероглифы )

Не получится. Надо изначально сформировать дамп в правильной кодировке - в той кодировке, которая установлена на стороне сервера, в который этот дамп будет заливаться.


Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "Проблема с mysqldump + кодировки"  +/
Сообщение от New_Birth (ok) on 26-Июл-11, 07:58 
>> Тогда вместо русских и арабских букв ютфные иероглифы )
>  Не получится. Надо изначально сформировать дамп в правильной кодировке - в
> той кодировке, которая установлена на стороне сервера, в который этот дамп
> будет заливаться.

В том то и проблема, что он весь в utf8. Я почему-то всю жизнь считал, что utf8 как раз и была создана, чтобы решить подобные проблемы, но видимо я ошибался )))

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "Проблема с mysqldump + кодировки"  +/
Сообщение от Дядя_Федор email on 26-Июл-11, 08:53 
> В том то и проблема, что он весь в utf8. Я почему-то
> всю жизнь считал, что utf8 как раз и была создана, чтобы
> решить подобные проблемы, но видимо я ошибался )))

Для того, чтобы клиенты, выводящие данные из базы корректно отображали их (в нужной кодировке) есть команда SET NAMES. Например, если кодировка клиента CP-1251, выставив SET NAMES=CP-1251 (или WINDOWS-1251 - точно не помню) - независимо от кодировки базы (таблицы) все данные будут выводится корректно. Есть еще такое понятие, как COLLATION, но оно в данном контексте значения не имеет - оно важно для различного вида сортировок.

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

11. "Проблема с mysqldump + кодировки"  +/
Сообщение от erera22 (ok) on 26-Июл-11, 12:35 
>> В том то и проблема, что он весь в utf8. Я почему-то
>> всю жизнь считал, что utf8 как раз и была создана, чтобы
>> решить подобные проблемы, но видимо я ошибался )))
>  Для того, чтобы клиенты, выводящие данные из базы корректно отображали их
> (в нужной кодировке) есть команда SET NAMES. Например, если кодировка клиента
> CP-1251, выставив SET NAMES=CP-1251 (или WINDOWS-1251 - точно не помню) -
> независимо от кодировки базы (таблицы) все данные будут выводится корректно. Есть
> еще такое понятие, как COLLATION, но оно в данном контексте значения
> не имеет - оно важно для различного вида сортировок.

Кстати да, как вариант, попробовать дописать в начало дампа "SET NAMES CP1251;", "SET CHARSET CP1251".

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

12. "Проблема с mysqldump + кодировки"  +/
Сообщение от New_Birth (ok) on 27-Июл-11, 08:20 
>[оверквотинг удален]
>>> всю жизнь считал, что utf8 как раз и была создана, чтобы
>>> решить подобные проблемы, но видимо я ошибался )))
>>  Для того, чтобы клиенты, выводящие данные из базы корректно отображали их
>> (в нужной кодировке) есть команда SET NAMES. Например, если кодировка клиента
>> CP-1251, выставив SET NAMES=CP-1251 (или WINDOWS-1251 - точно не помню) -
>> независимо от кодировки базы (таблицы) все данные будут выводится корректно. Есть
>> еще такое понятие, как COLLATION, но оно в данном контексте значения
>> не имеет - оно важно для различного вида сортировок.
> Кстати да, как вариант, попробовать дописать в начало дампа "SET NAMES CP1251;",
> "SET CHARSET CP1251".

C этим проблем нет. Русский язык я могу получить, а как при этом получить еще испанские буквы и арабскую вязь? Вот в этом основной вопрос и стоит. Сайт мультиязычный, в таблицах на разных языках записи.

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

13. "Проблема с mysqldump + кодировки"  +/
Сообщение от Дядя_Федор email on 27-Июл-11, 09:00 
> C этим проблем нет. Русский язык я могу получить, а как при
> этом получить еще испанские буквы и арабскую вязь? Вот в этом
> основной вопрос и стоит. Сайт мультиязычный, в таблицах на разных языках
> записи.

Очевидно, задать кодировку таблицы (базы) испанской и арабской. Разумеется, эта кодировка должна присутствовать в директории кодировок MySQL-сервера. И формировать дамп в соответствующей кодировке.

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

14. "Проблема с mysqldump + кодировки"  +/
Сообщение от Дядя_Федор email on 27-Июл-11, 09:04 
Вдогоночку:
1. http://www.toliblog.info/archives/128
2. http://4matic.wordpress.com/2006/11/11/izmenenie-kodirovki-t.../
тут описана работа с русскими кодировками. Но общий принцип такой же. Только у нас кодировок наплодили 5 штук. :)


Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру