Биллинговая система Nodeny

Главная категория => Общий раздел => Тема начата: Dolphin от 16 Ноября 2013, 15:49:15



Название: Проблема с русскими символами при переносе базы mysql 4.1.22 --> 5.5.33
Отправлено: Dolphin от 16 Ноября 2013, 15:49:15
Прошу помощи.

Перехожу с 45q на N+ и первое, с чем столкнулся не могу добиться корректного переноса полей с русскими буквами.
Вместо русских символов - знаки вопроса.

Рабочая база крутится под mysql 4.1.22
С такими переменными:
Код:
mysql> show variables like 'char%';
+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | cp1251                           |
| character_set_connection | cp1251                           |
| character_set_database   | cp1251                           |
| character_set_results    | cp1251                           |
| character_set_server     | cp1251                           |
| character_set_system     | utf8                             |
| character_sets_dir       | /usr/local/share/mysql/charsets/ |
+--------------------------+----------------------------------+

- Делаю дамп базы в файл;
- Копирую дамп на новый комп;
- Создаю новую базу (мускул: 5.5.33)  и заполняю её данными из дампа.

Захожу в phpmyadmin и вижу, что вместо русских символов - знаки вопросов.
С админским бубном плясал два дня, кпд=0 :(

Пременные на новом мускуле 5.5.33:
Код:
mysql> show variables like 'char%';
+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| 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/local/share/mysql/charsets/ |
+--------------------------+----------------------------------+

Кодировка таблиц везде: cp1251


У кого какие идеи, может кто-то сталкивался с подобным?


Название: Re: Проблема с русскими символами при переносе базы mysql 4.1.22 --> 5.5.33
Отправлено: ser970 от 16 Ноября 2013, 16:48:04
попробуйте типа
mysqldump -u -p --default-character-set=cp1251
и дама разворачивать тоже с указанием 


Название: Re: Проблема с русскими символами при переносе базы mysql 4.1.22 --> 5.5.33
Отправлено: Dolphin от 16 Ноября 2013, 19:31:38
попробуйте типа
mysqldump -u -p --default-character-set=cp1251
и дама разворачивать тоже с указанием 
пробовал.
В том то и дело, что он в 1251 дампит.


Название: Re: Проблема с русскими символами при переносе базы mysql 4.1.22 --> 5.5.33
Отправлено: ser970 от 16 Ноября 2013, 19:51:24
попробуйте типа
mysqldump -u -p --default-character-set=cp1251
и дама разворачивать тоже с указанием 
пробовал.
В том то и дело, что он в 1251 дампит.
а
mysql -u root --password=pass --default-character-set=utf8 < dump.sql 
?


Название: Re: Проблема с русскими символами при переносе базы mysql 4.1.22 --> 5.5.33
Отправлено: 0xbad0c0d3 от 16 Ноября 2013, 21:16:34
надо делать дамп с указанием --default-character-set=utf8, тогда экспорт будет сделан в указанной кодировке. а импортить уже как обычно, ну, или с указанием того же utf8


Название: Re: Проблема с русскими символами при переносе базы mysql 4.1.22 --> 5.5.33
Отправлено: ser970 от 16 Ноября 2013, 21:38:42
надо делать дамп с указанием --default-character-set=utf8, тогда экспорт будет сделан в указанной кодировке. а импортить уже как обычно, ну, или с указанием того же utf8
правильно  .
я показал как пример . в данном случае надо на cp1251 - должно помочь.


Название: Re: Проблема с русскими символами при переносе базы mysql 4.1.22 --> 5.5.33
Отправлено: Dolphin от 16 Ноября 2013, 23:26:52
Код:
mysqldump -u -p --default-character-set=cp1251 >bill45.sql
mysql -u -p --default-character-set=cp1251 bill45<bill45.sql

Код:
mysqldump -u -p --default-character-set=utf8 >bill45.sql
mysql -u -p --default-character-set=utf8 bill45<bill45.sql

не помогло...

есть еще идеи?


Название: Re: Проблема с русскими символами при переносе базы mysql 4.1.22 --> 5.5.33
Отправлено: Efendy от 17 Ноября 2013, 00:10:04
Понимаешь, в мускуле все немного хитрей. Там есть кодировка в которой хранятся данные, а есть кодировка, с которой работает клиент. То, что у тебя отображаются вопросы - это говорит о том, что у тебя клиент работает в другой кодировке чем думает мускул.

Обрати внимание - по-барабану в какой кодировке хранятся данные. Важно чтобы соответствовала кодировка коннекта.

Т.е. биллинг будет корректно работать даже если в мускуле все таблицы будут в cp1251,  биллинг просто об этом знать не будет. Он соединился по utf8 и получил данные по utf8.

Конечно, желательно чтобы и кодировка хранения тоже была утф8 - мы тогда сможем хранить стопицот причудливых символов, для которых и сделана эта кодировка. Но и в этом нет проблемы, т.к. скрипт перехода конвертит все таблицы в утф8.

Ты можешь это проверить:

Код:
SET NAMES utf8;
select fio from users;

Короче, ты воюешь с ветрянными мельницами. Дело в настройке phpmyadmin


Название: Re: Проблема с русскими символами при переносе базы mysql 4.1.22 --> 5.5.33
Отправлено: ser970 от 17 Ноября 2013, 11:25:51
Код:
mysqldump -u -p --default-character-set=cp1251 >bill45.sql
mysql -u -p --default-character-set=cp1251 bill45<bill45.sql

Код:
mysqldump -u -p --default-character-set=utf8 >bill45.sql
mysql -u -p --default-character-set=utf8 bill45<bill45.sql

не помогло...

есть еще идеи?


дай ssh попробую помочь


Название: Re: Проблема с русскими символами при переносе базы mysql 4.1.22 --> 5.5.33
Отправлено: Dolphin от 17 Ноября 2013, 15:42:33
Ты можешь это проверить:

Код:
SET NAMES utf8;
select fio from users;

Короче, ты воюешь с ветрянными мельницами. Дело в настройке phpmyadmin

Тоже вопросительные знаки...
Дальше при настройке, ушел от просмотра в phpmyadmin-е, смотрел в консоли мускула.
Везде были знаки вопроса.
Психанул и приехал на железную консоль, дабы исключить putty :)
Все-равно - вопросы...
На сервере лежал админский бубен: хттп://buben.biz.ua/katalog/buben-bsd/ (не реклама)
С его помощью закоментировал в my.cnf (а сам же правил)
Код:
[client]
#default-character-set = utf8

... и все взлетело. Причем и в phpmyadmin.

Всем спасибо за помощь.

2ser970:
Спасибо за помощь, но хотелось самому выяснить причину...

2Efendy:
В доке по установке мускула, есть такой момент:
Код:
cp /usr/local/share/mysql/my-huge.cnf /etc/my.cnf
ee /etc/my.cnf

С дефолтным запуском, как в доке, - мускул запускает конфиг не из /etc/my.cnf, а из /var/db/mysql/my.cnf
Подправь...


Название: Re: Проблема с русскими символами при переносе базы mysql 4.1.22 --> 5.5.33
Отправлено: Efendy от 17 Ноября 2013, 21:39:11
Цитировать
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf /usr/local/etc/mysql/my.cnf ~/.my.cnf
Перевожу: опции по умолчанию читаются из следующих файлов в таком порядке: блаблабла.


Название: Re: Проблема с русскими символами при переносе базы mysql 4.1.22 --> 5.5.33
Отправлено: Dolphin от 17 Ноября 2013, 22:13:35
/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf /usr/local/etc/mysql/my.cnf ~/.my.cnf
Перевожу: опции по умолчанию читаются из следующих файлов в таком порядке: блаблабла.
[/quote]

Буду знать, спасибо.



Нарисовалась другая проблема.
Перенес базу на новый комп, с ноудени 49.33.
Делал по мануалу: хттп://forum.nodeny.com.ua/index.php?topic=552.msg9835#msg9835

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

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

В my.cnf везде указал cp1251.

Я уже запутался...   
Разве НД 49.33 использует не cp1251 при общении с мускулом?


Название: Re: Проблема с русскими символами при переносе базы mysql 4.1.22 --> 5.5.33
Отправлено: Dolphin от 17 Ноября 2013, 23:03:31
В догонку...

Header страницы отдается: <meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>
Кодировка отображения страницы установлена в cp1251.

В чем может быть проблема?


Название: Re: Проблема с русскими символами при переносе базы mysql 4.1.22 --> 5.5.33
Отправлено: Efendy от 18 Ноября 2013, 00:43:40
А тебе не все равно что показывает 49я версия? тебе ж на н+ переежжать надо?


Название: Re: Проблема с русскими символами при переносе базы mysql 4.1.22 --> 5.5.33
Отправлено: Dolphin от 18 Ноября 2013, 01:32:52
А тебе не все равно что показывает 49я версия? тебе ж на н+ переежжать надо?

Как раз этим и занимаюсь...


Название: Re: Проблема с русскими символами при переносе базы mysql 4.1.22 --> 5.5.33
Отправлено: muff от 18 Февраля 2014, 11:14:57
Если возникают проблемы с кодировками и не получается с ходу разобраться, можно воспользоваться сторонними инструментами, например Sypex Dumper.