Тема: mysqldump не поддерживает русские знаки и буквы

Привет всем!
У меня следующая проблема:
есть база в кодировке utf-8, таблица в utf-8, поля в той же самой utf-8, Collation везде указана utf8_unicode_ci.
При выполнении "mysqldump --quick -n --host=h.h.h.h --user=*** --pass=*** test > dump.sql", где test - имя базы данных, получаю вместо русских букв вопросики "??????" . В PHPMyAdmin знаки вижу на русском.  Уже не знаю как получить в mysqldump правильный бэкап. Обшарил кучу форумов ничего похожего не обнаружил.

MySQL - 4.1.11
phpMyAdmin - 2.8.0.2

помогите пожалуйста беспомощному бродяге...

2

Re: mysqldump не поддерживает русские знаки и буквы

vadim_1980
Как я понял: с сервера делается дамп, где в phpMyAdmin кириллица выглядит нормально, при импорте этого дампа кириллица превращается в вопросики.
Откройте дамп текстовым редактором (рекомендую Notepad++). Посмотрите как там кириллица выглядит.

3

Re: mysqldump не поддерживает русские знаки и буквы

я смотрел там тоже вопросики. Команду "mysqldump --quick -n --host=h.h.h.h --user=*** --pass=*** test > dump.sql" я вызываю через php-функцию shell_exec(). Если я вывожу её "output" то вижу те же самые вопросы. Может mysql неправильно отконфигурирован или сам Linux не поддерживает кирилицу или ещё что-нибудь?

4

Re: mysqldump не поддерживает русские знаки и буквы

Попробуйте добавить ключ --default-character-set=utf8
Как я понимаю, у вас данные в utf8.

5

Re: mysqldump не поддерживает русские знаки и буквы

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

6

Re: mysqldump не поддерживает русские знаки и буквы

Попробуйте указать каталог с файлами описаний кодировок добавив еще и ключ --character-sets-dir=path
Путь к этому каталогу вам надо поискать самому. В документации есть такой: /usr/local/mysql/share/mysql/charsets
В phpMyAdmin, на странице переменных можно найти директиву character sets dir.

Почему вы не делаете дамп с помощью phpMyAdmin?

7

Re: mysqldump не поддерживает русские знаки и буквы

Hanut сказал:

Попробуйте указать каталог с файлами описаний кодировок добавив еще и ключ --character-sets-dir=path
Путь к этому каталогу вам надо поискать самому. В документации есть такой: /usr/local/mysql/share/mysql/charsets
В phpMyAdmin, на странице переменных можно найти директиву character sets dir.

Почему вы не делаете дамп с помощью phpMyAdmin?

Вообще дамп делается для копирования базы данных при помощи следующей команды:

shell_exec('mysqldump --quick -n --host=*** --user=*** --pass=*** main_db | mysql --host=*** --user=*** --pass=*** -C new_db'.$counter);

Если я пытаюсь выводить то что даёт дамп:

echo shell_exec('mysqldump --quick -n --host=*** --user=*** --pass=*** main_db');

то кирилица уже при этом превращается в ?????????.

При добавлении ключей --character-sets-dir="/usr/share/mysql/charsets/ (путь я посмотрел в phpMyAdmin) или --default-character-set=utf8 mysqldump не выдаёт вообще ничего. Какие ещё могут быть возможности решения проблемы?

8

Re: mysqldump не поддерживает русские знаки и буквы

vadim_1980
Попробуйте задать локаль перед sell_exec():

putenv('LANG=en_US.UTF-8');

9

Re: mysqldump не поддерживает русские знаки и буквы

putenv('LANG=en_US.UTF-8');

к сожалению не помогло
Попробовал также вот это:

putenv('LANG=ru_RU.UTF-8');

результат тот же.

10

Re: mysqldump не поддерживает русские знаки и буквы

vadim_1980
Вы проверяете дамп сохранением в файл? Не могу понять что с этим ключом --default-character-set=utf8 и вообще странная ситуация.