Восстановление базу из дампе через mysql утилиту

alekciy

Новичок
Восстановление базу из дампе через mysql утилиту

ОС: Fedora Core (ядро 2.6.18)
MySQL: 5.0.45
Утилита mysql: Ver 14.12 Distrib 5.0.45, for redhat-linux-gnu (i386)

Описание:
Есть база данных (my_db) с таблицами MyISAM в кодировке windows-1251. Создается её дамп командой:
Код:
mysqldump -u ******* -p******** --default-character-set=cp1251 my_db > my_db.sql
Дамп получается большой, более 60МБ поэтому я его делают именно так, а не через PHPMyAdmin (тем более в свете того, что это все на мастерхосте, кто юзал там pma думаю меня поймут :) ). Полученный дамп выходит корректным, что видно, если его просто просмотреть через браузер просто как текст. При кодировке браузера windows-1251 все киррилические символы видно нормально, ни каких кракозябров.

В общем дамп создан и он корректный. В самом дампе charset=cp1251 при создании таблиц явно заданы.


Далее пытаюсь его развернуть на другом хосте. На нем имеем:
Код:
mysql> SHOW VARIABLEs LIKE '%char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | cp1251                     |
| character_set_connection | cp1251                     |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | cp1251                     |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
Т.е. как я понимаю при соединении утилиты mysql с сервером кодировка соединения равна 1251. Разворачиваю:
Код:
[root@v6558 ~]# mysql -u ****** -p******* my_db < my_db.sql
Проблема
После восстановление из дампа в базе все кириллические символы выводяться знаками вопроса.

Вопрос
Можно ли утилитой mysql корректно восстановить cp1251 дамп? Может есть возможность получить доступ к базе через mysql, задать все нужные кодировки, а потом дать команду на вставку данных из дампа, но как?

P.S. Понятное дело, что один из методов решения, особо учитывая, что имеет рут доступ, это выставление максимально возможных настроек которые позволили бы залить файл большего объема. Собственно это и было сделано через сжатие дампа и заливку его через pma. И в базе получаем корректные кириллические символы, что еще раз подтверждать правильность создание самого дампа. Но такая возможность предоставляется не всегда и хочется найти вариант с mysql утилем.
 

DiMA

php.spb.ru
Команда форума
с какой целью указал --default-character-set=cp1251? Удали и попробуй.

импортилка на пхп такого дампа из файла пишется за 15 минут... наверно дольше вопрос писал :)
 

alekciy

Новичок
DiMA
Зачем? Ну сначала его не было, но полистав описание решил добавить на всякий пожарный. По сути в контексте данного хостинга это ни чего не меняет. Дамп получился корректный.

Да, насчет написание своей импортилки я уже думал (хотя 15 минут это наверное слишком оптимистично :) ), но просто походив поиском по рунету и не найдя ни чего адекватного поэтому вопросу я очень увидился. Неужели только я один такой дотошный? О_о

Я конечно не Станиславский, но... "не верю!" (с)

Поэтому и решил запостить на форум с целью провентилировать данный вопрос с общественностью.
 

alekciy

Новичок
Если это в контексте 15 минут, то да, это я видел уже. Поиск по означиной проблеме выдает его одним из первых. Но за напоминание спасибо, т.к. первоначально я по нему пробежался очень поверхностно. Через него видимо и закатаю.

Но основного вопроса по mysql это все не снимает ) . Получается, что mysql-ем нельзя завернуть не latin-1 дамп?
 

zerkms

TDD infected
Команда форума
alekciy
всё можно.

Можно ли утилитой mysql корректно восстановить cp1251 дамп?
какая кодировка полученного файла? что написано в SET NAMES дампа?
 

Фанат

oncle terrible
Команда форума
Советы про похапе и сайпекс жгут напалмом.

После восстановление из дампа в базе все кириллические символы выводяться знаками вопроса.
ну а выводишь-то ты их по-челочечески?
 

Активист

Активист
Команда форума
alekciy
Смотри в PHP MyADMIN

Если используешь консоль, то установи set names 'xxxx', где XXX кодировка твоей консоли (cp866 для винды, для линункса - поробуй разные кириллические или UTF8).

Нужно поставить кодировку именно в клиенте, судя по твоему посту - в базе все верно.
 
Сверху