Вход в почту


Каталог статей

Главная » Статьи » уроки

    MySQL и кодировка  >  уроки


    Сегодня я столкнулся с переносом данных между двумя серверами: MySQL
    4.0 на FreeBSD (доступ через SSH) и MySQL 5.0 на Windows XP локально
    (базовый пакет XAMPP Web Servers). В общем не суть важно… Все мы знаем,
    что при любом импорте и экспорте данных из одной базы данных в другую,
    возникают проблемы с русскими буквами. Вы наверняка сталкивались с
    кучей статей по этому поводу, и все они хорошие, но сегодня я ушел чуть
    глубже.


    Задача была простая - удалить пару строк из одной таблички на
    удалённом веб-сервере. Поставить phpmyadmin и решить вопрос за 2-3
    минуты.. А можно было отследить первичные ключи требуемых записей и
    простым запросом на удалённом сервере их удалить. Слишком уж всё это
    просто. Я пошёл иным путём.

    На FreeBSD:

    mysqldump -u -p --default-character-set=cp1251 dbname tablename > dump_table.sql

    Следующий
    этап я делаю на сервере FreeBSD, т.к. глючный виндовый блокнот будет
    три часа 10 метров открывать. Альтернатива - UNIX редактор vi:

    vi dump_table.sql

    Добавляем две строчки в начало файла:

    SET NAMES cp1251;
    SET CHARACTER SET cp1251;

    Затем
    я скачал файл себе на компьютер, а здесь уже через mysql.exe
    импортировал его в свою локальную базу данных. Открываю в MySQL Query
    Browser, русский текст! Ура! Но это еще только начало… Удалил пару
    строк. Обратный экспорт в MySQL 4.0 не получился. Точнее получился,
    только китайский. MySQL Administrator с этим тоже не справился, хотя
    настройки все верны. Пробуем:

    mysqldump -u -p dbname tablename > dump_table.sql

    Во-первых
    MySQL 4.0 сразу начинает ругаться на команды SET NAMES и SET CHARACTER
    SET и DEFAULT CHARSET. Не было таких в его времена (только не
    спрашивайте где я нашел такой древний хостинг). Эти строчки можно
    вручную удалить если дамп не большой. А что делать если вы
    экспортируете таблиц 100? Всё просто - включаем обратную совместимость
    в MySQL:

    mysqldump -u -p --compatible=mysql40 dbname tablename > dump_table.sql

    Уже лучше. Но русский язык так и не появился. Можно выставить принудительную кодировку при экспорте:

    mysqldump -u -p --compatible=mysql40 --default-character-set=cp1251 dbname tablename > dump_table.sql

    И
    тут понеслось… Ошибка: mysqldump: Character set ‘cp1251? is not a
    compiled character set and is not specified in the
    ‘C:\mysql\\share\charsets\Index.xml’ file. Здесь я начал ковырять
    my.cnf, добавлять различные строки, указывающие на пути к кодировкам,
    всё согласно инструкции на официальном сайте MySQL 5. Нет, ничего не
    помогло… Программы mysql.exe и mysqldump.exe вообще никак на мой
    конфигурационный файл не реагировали. Параметр –defaults-file тоже не
    помог.

    Ну и вот собственно решение:

    mysqldump --character-sets-dir=C:/xampp/mysql/share/charsets/ --default-character-set=cp1251 -u -p dbname tablename > dump_table.sql

    Забавно…
    Кучу форумов пролистал, нигде об этом не написано, а нашёл в
    документации MySQL 5 в дополнительных параметрах к mysqldump. Насколько
    я понимаю, mysql.exe и mysqldump.exe (и другие в том числе) заранее
    как-то откомпилированы что-ли, и не зависят ни от каких
    конфигурационных файлов, по крайней мере в XAMPP. Злые любители денвера
    тоже на них ругались. В общем не виндовое это дело… wink

  •    Получить ссылку

    В новом окне Просмотров:[853]Добавлено:17.06.2025 Подробнее

Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]




Создатели u.Tools не несут ответственности за размещаемые материалы. Каждый файл принадежит его создателю.
Сайт оптимизтрован для просмотра в брузерах:Firefox & Opera при разрешении экрана 1280x1024 пикселя.

Главное меню

  • Главная
  • Форум
  • Правила
  • Об uTools
  • Фотографии
  • Обзоры
  • Тематические новости
  • jQuery
  • u.Faq
  • Загрузки
  • Олимпиада
  • Кто нас сегодня посетил


  • Главная | Новости | Загрузки | Вопрос-ответ | Обзоры | Контакты

    © u.Tools
    Хостинг от uCoz

    Служба поддержки


    support@utools.net.ru

    1967426