The OpenNET Project / Index page

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

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

"перенос базы mysql, сбилась кодировка"  
Сообщение от daevy on 03-Окт-08, 11:44 
Всем доброго веремени суток, случилась такая проблема
есть машина linux, с локалью UTF-8 на ней крутится MySQL для программы SAMS, так вот я сделал бэкап базы средствами mysqldump затем скопироавл на другую машину (с UTF-8) и залил ее в новый mysql следующим образом: mysql -u root -p < mysqlbase
все было хорошо до тех пор пока я не залез в админку SAMS'а все что было на русском языке, стало каракулями. Так вот куда копать?
Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

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


1. "перенос базы mysql, сбилась кодировка"  
Сообщение от sergey.shkolin (ok) on 03-Окт-08, 12:27 
>Всем доброго веремени суток, случилась такая проблема
>есть машина linux, с локалью UTF-8 на ней крутится MySQL для программы
>SAMS, так вот я сделал бэкап базы средствами mysqldump затем скопироавл
>на другую машину (с UTF-8) и залил ее в новый mysql
>следующим образом: mysql -u root -p < mysqlbase
>все было хорошо до тех пор пока я не залез в админку
>SAMS'а все что было на русском языке, стало каракулями. Так вот
>куда копать?

ну а сама база то в какой кодировке?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "перенос базы mysql, сбилась кодировка"  
Сообщение от daevy on 03-Окт-08, 13:05 
>ну а сама база то в какой кодировке?

с mysql туго, если подскажите как узнать то напишу.
в my.cnf ничего по кодировкам не написано.
mysql -V выдает - mysql  Ver 14.7 Distrib 4.1.20

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "перенос базы mysql, сбилась кодировка"  
Сообщение от daevy on 03-Окт-08, 14:41 

>ну а сама база то в какой кодировке?

на исходной машине я посмотрел через show variables; думаю что вы спрашивали об этом
| character_set_client           | latin1 |
| character_set_connection       | latin1
| character_set_database         | latin1                                                
| character_set_results          | latin1                                                
| character_set_server           | latin1                                                |
| character_set_system           | utf8

на целевой та же команда показывает вот что
| character_set_client            | utf8                                                                |
| character_set_connection        | utf8                                                                |
| character_set_database          | utf8                                                                |
| character_set_filesystem        | binary                                                              |
| character_set_results           | utf8                                                                |
| character_set_server            | utf8                                                                |
| character_set_system            | utf8

теперь что делать дальше?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "перенос базы mysql, сбилась кодировка"  
Сообщение от daevy on 03-Окт-08, 15:12 
делаю запрос к базе в полях где должны быть русскоязычные строки, просто серый фон, в одной ветке форума написано что база импортировалась не правильно, как можно ее экспортировать с определенной кодировкой?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "перенос базы mysql, сбилась кодировка"  
Сообщение от sergey.shkolin (ok) on 03-Окт-08, 17:44 
>делаю запрос к базе в полях где должны быть русскоязычные строки, просто
>серый фон, в одной ветке форума написано что база импортировалась не
>правильно, как можно ее экспортировать с определенной кодировкой?

mysqldump db_NAME --default_character_set=utf8 >> /db_NAME.sql

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "перенос базы mysql, сбилась кодировка"  
Сообщение от daevy on 06-Окт-08, 05:55 

>mysqldump db_NAME --default_character_set=utf8 >> /db_NAME.sql

ок. сейчас попробую

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "перенос базы mysql, сбилась кодировка"  
Сообщение от Pahanivo email(ok) on 06-Окт-08, 07:20 
>
>>mysqldump db_NAME --default_character_set=utf8 >> /db_NAME.sql
>
>ок. сейчас попробую

Пипл а какая связь ЛОКАЛИ с КОДИРОВКОЙ МУСКУЛА? )

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "перенос базы mysql, сбилась кодировка"  
Сообщение от daevy on 06-Окт-08, 07:30 
>>
>>>mysqldump db_NAME --default_character_set=utf8 >> /db_NAME.sql
>>
>>ок. сейчас попробую
>
>Пипл а какая связь ЛОКАЛИ с КОДИРОВКОЙ МУСКУЛА? )

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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "перенос базы mysql, сбилась кодировка"  
Сообщение от Pahanivo email(ok) on 06-Окт-08, 10:06 
Нет. Локаль это локаль.
А кодировка в базах мускула - это другое.
В мускуле до 4.0 включительно дефолтная кодировка задавалась при компиляции либо в конфиге. Как правило для веб нужд cp1251.
Начиная с версии 4.1 появилась возможность указывать свою кодировку для баз, таблиц, столбцов. Также появились колейшены (сравнения), которые определяют как будут выполнятся операции сравнения над текстовыми данными.
Также надо принимать во внимание тот факт что при коннекте между клиентом и сервером может использоваться треть кодировка.
Поэтому чтобы у тя гарантированно сраслось и не пришлось плясать с подбором чарсета выгружай и загрузай базы с консоли с указанием конкретной кодировки.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "перенос базы mysql, сбилась кодировка"  
Сообщение от zoonman (ok) on 06-Окт-08, 11:08 
> Как правило для веб нужд cp1251.

Нужды бывают разные, у меня UTF8

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "перенос базы mysql, сбилась кодировка"  
Сообщение от Pahanivo email(ok) on 06-Окт-08, 13:21 
>> Как правило для веб нужд cp1251.
>
>Нужды бывают разные, у меня UTF8

Под веб чаще 1251 - ключевая фраза "как правило" )

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

12. "перенос базы mysql, сбилась кодировка"  
Сообщение от daevy on 06-Окт-08, 13:47 
>[оверквотинг удален]
>В мускуле до 4.0 включительно дефолтная кодировка задавалась при компиляции либо в
>конфиге. Как правило для веб нужд cp1251.
>Начиная с версии 4.1 появилась возможность указывать свою кодировку для баз, таблиц,
>столбцов. Также появились колейшены (сравнения), которые определяют как будут выполнятся операции
>сравнения над текстовыми данными.
>Также надо принимать во внимание тот факт что при коннекте между клиентом
>и сервером может использоваться треть кодировка.
>Поэтому чтобы у тя гарантированно сраслось и не пришлось плясать с подбором
>чарсета выгружай и загрузай базы с консоли с указанием конкретной кодировки.
>

спасибо, за разъяснение.
на исходной машине я сейчас сделал так
mysqldump -u root -p --all --add-drop-table --all-databases --force --default_character_set=utf8  > mysqlbackup
на целевой запустил так
mysql -u root -p < mysqlbackup
все получится как надо или нет?:-)

при импорте также можно указать параметр --default_character_set=utf8 ?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

13. "перенос базы mysql, сбилась кодировка"  
Сообщение от daevy on 07-Окт-08, 06:54 
люди не получается. все равно при select * from table; вижу каракули. что я не сделал?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

14. "перенос базы mysql, сбилась кодировка"  
Сообщение от Pahanivo email(ok) on 07-Окт-08, 08:07 
>люди не получается. все равно при select * from table; вижу каракули.
>что я не сделал?

Версии покажи, покажи настройки (кодировки).
Кодировку баз покажи.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

15. "перенос базы mysql, сбилась кодировка"  
Сообщение от daevy on 07-Окт-08, 09:03 
>Версии покажи, покажи настройки (кодировки).
>Кодировку баз покажи.

исходный сервер:
mysql  Ver 14.7 Distrib 4.1.20, for redhat-linux-gnu (i386) using readline 4.3
в my.cnf настройки кодировок не описаны

это кодировки баз?
character_set_client            | latin1                                                 |
| character_set_connection        | latin1                                                 |
| character_set_database          | latin1                                                 |
| character_set_results           | latin1                                                 |
| character_set_server            | latin1                                                 |
| character_set_system            | utf8                                                   |
| character_sets_dir              | /usr/share/mysql/charsets/                             |
| collation_connection            | latin1_swedish_ci                                      |
| collation_database              | latin1_swedish_ci                                      |
| collation_server                | latin1_swedish_ci

целевой сервер:
mysql  Ver 14.12 Distrib 5.0.60, for pc-linux-gnu (i486) using readline 5.2
в my.cnf
[mysql]
character-sets-dir=/usr/share/mysql/charsets
default-character-set=utf8

[mysqladmin]
character-sets-dir=/usr/share/mysql/charsets
default-character-set=utf8

[mysqlcheck]
character-sets-dir=/usr/share/mysql/charsets
default-character-set=utf8

[mysqldump]
character-sets-dir=/usr/share/mysql/charsets
default-character-set=utf8

[mysqlimport]
character-sets-dir=/usr/share/mysql/charsets
default-character-set=utf8

[mysqlshow]
character-sets-dir=/usr/share/mysql/charsets
default-character-set=utf8

[myisamchk]
character-sets-dir=/usr/share/mysql/charsets

[myisampack]
character-sets-dir=/usr/share/mysql/charsets

[mysqld]
character-set-server            = utf8
default-character-set           = utf8

в mysql консоли show variables показывает следующуе

character_set_client            | utf8                                                                |
| character_set_connection        | utf8                                                                |
| character_set_database          | utf8                                                                |
| character_set_filesystem        | binary                                                              |
| character_set_results           | utf8                                                                |
| character_set_server            | utf8                                                                |
| character_set_system            | utf8                                                                |
| character_sets_dir              | /usr/share/mysql/charsets/                                          |
| collation_connection            | utf8_general_ci                                                     |
| collation_database              | utf8_general_ci                                                     |
| collation_server                | utf8_general_ci

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

16. "перенос базы mysql, сбилась кодировка"  
Сообщение от daevy on 07-Окт-08, 09:05 
выяснилось что в импортированную базу, на целевом сервере, невозможно внести строки с кириллицей.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

17. "перенос базы mysql, сбилась кодировка"  
Сообщение от Pahanivo email(ok) on 07-Окт-08, 09:42 
Попробуй это
http://server-tuning.info/mysql/latin1-utf8.html

У тебя исходно latin1 а ты его в utf-8 импортируешь.
Если че мона попробовать на целевом серваке выставить latin1.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

18. "перенос базы mysql, сбилась кодировка"  
Сообщение от daevy on 07-Окт-08, 10:07 
>Попробуй это
>http://server-tuning.info/mysql/latin1-utf8.html
>
>У тебя исходно latin1 а ты его в utf-8 импортируешь.
>Если че мона попробовать на целевом серваке выставить latin1.

вобщем по статье все проделал, залил базу рускоязычные строки вобще исчезли, пустое место вместо них.
как можно выставить latin1 ?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

19. "перенос базы mysql, сбилась кодировка"  
Сообщение от Pahanivo email(ok) on 07-Окт-08, 10:39 
>>Попробуй это
>>http://server-tuning.info/mysql/latin1-utf8.html
>>
>>У тебя исходно latin1 а ты его в utf-8 импортируешь.
>>Если че мона попробовать на целевом серваке выставить latin1.
>
>вобщем по статье все проделал, залил базу рускоязычные строки вобще исчезли, пустое
>место вместо них.
>как можно выставить latin1 ?

при создании баз укажи
юзай phpmyadmin там все удобно и понятно

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

21. "перенос базы mysql, сбилась кодировка"  
Сообщение от Yaroslav email(ok) on 12-Дек-08, 19:07 
>Попробуй это
>http://server-tuning.info/mysql/latin1-utf8.html
>
>У тебя исходно latin1 а ты его в utf-8 импортируешь.
>Если че мона попробовать на целевом серваке выставить latin1.

У меня отлично сработало. Переносил из cp1251 в latin1.
Спасибо.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

20. "перенос базы mysql, сбилась кодировка"  
Сообщение от angra (ok) on 10-Окт-08, 09:07 
>Так вот куда копать?

Как обычно, в сторону документации, благо для мускула она очень подробная и написана читаемым языком. Не вижу смысла цитировать в этом топике куски из доки. Основное на что стоит обратить внимание:
1. Текущая локаль никак не связана с кодировкой базы
2. Кодировка соединения(то что вы наблюдаете в клиенте mysql или пых скриптах) почти не связана с кодировкой базы.
3. Нужно учитывать все уровни кодировки: база->таблица->поле
4. Есть разница между кодировкой базы и кодировкой данных. Вам ничто не помешает пихать данные в cp1251 в поля с кодировкой latin1, вот только при попытке их извлечь получите невменяемый дамп. Все возможности мускула по прозрачной перекодировке работают только если данные в базе соответствуют указанной кодировке. То есть например, если указана для поля(таблицы, базы) кодировка cp1251 и данные туда пихались в cp1251, то независимо от кодировки(например utf8 или koi8r) клиента(а mysql и mysqldump это тоже клиенты) вы увидите данные в нормальном виде(кроме неконвертируемых символов, например в koi8r нет некоторых кавычек).  

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

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

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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