Биллинговая система Nodeny
23 Ноября 2024, 00:24:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: [1] 2
  Печать  
Автор Тема: Проблема с русскими символами при переносе базы mysql 4.1.22 --> 5.5.33  (Прочитано 10495 раз)
Dolphin
Постоялец
***

Карма: 2
Offline Offline

Сообщений: 118


Просмотр профиля
« : 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


У кого какие идеи, может кто-то сталкивался с подобным?
Записан
ser970
NoDeny
Спец
*

Карма: 70
Offline Offline

Сообщений: 1323

262462619
Просмотр профиля Email
« Ответ #1 : 16 Ноября 2013, 16:48:04 »

попробуйте типа
mysqldump -u -p --default-character-set=cp1251
и дама разворачивать тоже с указанием 
Записан
Dolphin
Постоялец
***

Карма: 2
Offline Offline

Сообщений: 118


Просмотр профиля
« Ответ #2 : 16 Ноября 2013, 19:31:38 »

попробуйте типа
mysqldump -u -p --default-character-set=cp1251
и дама разворачивать тоже с указанием 
пробовал.
В том то и дело, что он в 1251 дампит.
Записан
ser970
NoDeny
Спец
*

Карма: 70
Offline Offline

Сообщений: 1323

262462619
Просмотр профиля Email
« Ответ #3 : 16 Ноября 2013, 19:51:24 »

попробуйте типа
mysqldump -u -p --default-character-set=cp1251
и дама разворачивать тоже с указанием 
пробовал.
В том то и дело, что он в 1251 дампит.
а
mysql -u root --password=pass --default-character-set=utf8 < dump.sql 
?
Записан
0xbad0c0d3
гуру nodeny )
NoDeny
Спец
*

Карма: 116
Offline Offline

Сообщений: 1059



Просмотр профиля
« Ответ #4 : 16 Ноября 2013, 21:16:34 »

надо делать дамп с указанием --default-character-set=utf8, тогда экспорт будет сделан в указанной кодировке. а импортить уже как обычно, ну, или с указанием того же utf8
Записан
ser970
NoDeny
Спец
*

Карма: 70
Offline Offline

Сообщений: 1323

262462619
Просмотр профиля Email
« Ответ #5 : 16 Ноября 2013, 21:38:42 »

надо делать дамп с указанием --default-character-set=utf8, тогда экспорт будет сделан в указанной кодировке. а импортить уже как обычно, ну, или с указанием того же utf8
правильно  .
я показал как пример . в данном случае надо на cp1251 - должно помочь.
Записан
Dolphin
Постоялец
***

Карма: 2
Offline Offline

Сообщений: 118


Просмотр профиля
« Ответ #6 : 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

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

есть еще идеи?
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4790



Просмотр профиля
« Ответ #7 : 17 Ноября 2013, 00:10:04 »

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

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

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

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

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

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

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

Карма: 70
Offline Offline

Сообщений: 1323

262462619
Просмотр профиля Email
« Ответ #8 : 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 попробую помочь
Записан
Dolphin
Постоялец
***

Карма: 2
Offline Offline

Сообщений: 118


Просмотр профиля
« Ответ #9 : 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
Подправь...
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4790



Просмотр профиля
« Ответ #10 : 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
Перевожу: опции по умолчанию читаются из следующих файлов в таком порядке: блаблабла.
Записан
Dolphin
Постоялец
***

Карма: 2
Offline Offline

Сообщений: 118


Просмотр профиля
« Ответ #11 : 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 при общении с мускулом?
Записан
Dolphin
Постоялец
***

Карма: 2
Offline Offline

Сообщений: 118


Просмотр профиля
« Ответ #12 : 17 Ноября 2013, 23:03:31 »

В догонку...

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

В чем может быть проблема?
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4790



Просмотр профиля
« Ответ #13 : 18 Ноября 2013, 00:43:40 »

А тебе не все равно что показывает 49я версия? тебе ж на н+ переежжать надо?
Записан
Dolphin
Постоялец
***

Карма: 2
Offline Offline

Сообщений: 118


Просмотр профиля
« Ответ #14 : 18 Ноября 2013, 01:32:52 »

А тебе не все равно что показывает 49я версия? тебе ж на н+ переежжать надо?

Как раз этим и занимаюсь...
Записан
Страниц: [1] 2
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!