Кодировки MySQL. Сос!

Автор ExGoth, 11:16, 10 июня, 2014

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

ExGoth

Камрады, сложилась ситуация, в которой я уже голову сломал.
Есть сайт на стороннем хостинге, у хостера есть phpMyAdmin.
Есть скрипт, который выгружает данные из 1С и скрипт-дампер на сайте, который заливает выгрузку на сайт.
В майадмин везде кодировки выставлены 1251.
Дамп, выгружаемый из 1С затрагивает только таблицы виртумарта, установленного на сайте.
Если дамп заливать через майадмин, принудительно выставив ему кодировку 1251 - все ок.
Если дамп заливать через дампер - кодировка разделов и товаров в виртумарте сбивается.
Не могу понять где собака порылась. Дампер вроде бы просто болванчик, который не выставляет свою кодировку, т.е. кодировка определяется сервером, на котором крутится база. На старом хостинге все работало на ура, т.е. самому дамперу и не нужно было выставлять кодировку данным. Но настройки mysql там посмотреть возможности уже нет.
Кто в теме - куда копать?

old-guy

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

При заливании базы - то же самое

дамп имеет одну кодировку, база может иметь другую

Все будет хорошо, когда все эти кодировки начнут соответствовать .


ExGoth

Цитата: old-guy от 13:20, 10 июня, 2014
при создании базы имеют одну кодировку
при записи этих данных в базу они могут иметь другую кодировку
при дампе, по идее выливать должен в кодировку по-умолчанию консоли
при майскульадм дампе должен выливать в кодировку базы данных

При заливании базы - то же самое

дамп имеет одну кодировку, база может иметь другую

Все будет хорошо, когда все эти кодировки начнут соответствовать .

Да я вроде конвертнул базу, проверил все таблицы, в майадмине изменил кодировку соединения. Кодировка сервера - по умолчанию UTF8 - c ней ничего не сделаешь. Самое интересное, что на локальном денвере - все работает нормально, а на хостинге - нет. Из чего я делаю вывод что проблема именно в настройках сервера БД и кодировках самой БД. Но что еще можно накрутить - ума не приложу.

Либо, как вариант - зайти с другой стороны и искать дампер, который мог бы конвертить кодировку заливаемого дампа. Sypex Dumper это умеет, но при заливке 1С-ного дампа он выполняет его пока не отвалится по таймауту (таймаут - 10 минут). Шкала выполнения доходит до 100%, но вот что-то не жует он эти дампы, хотя свои собственные - за милисекунды перезаливает.


old-guy

дампаем базу
mysqldump --hex-blob --user=root --password=password --host=mybox mydatabase --default-character-set=latin1 > mydatabase.latin1.sql

изменяем команду с заголовком кодировки
sed -e 's/latin1/utf8/g' mydatabase.latin1.sql > mydatabase.utf8.sql

конвертируем из cp1251 в utf8
iconv -f cp1251 -t utf8 mydatabase.utf8.sql > mydatabase.utf8.sql

потом пробуем заливать




Данный форум не является СМИ в соответствии с Законом №2124-1.
Яндекс.Метрика