Як встановити кодування передпочатком роботи mysqldump, PHPClub - клуб розробників PHP
Як встановити кодування перед початком роботи mysqldump
Існує віртуальний хостинг на sweb.ru. На ньому є БД utf8, яку треба здампити в utf8-файл. Якщо дампити її через mysqldump, то дампиться в CP1251, тому що налаштовано там все наступним чином (змінні запитували перебуваючи в БД, яку треба здампити):
База даних та її таблиці зберігаються в utf8. Т. е. якщо зробити SET NAMES 'utf8' то все чудово відображається.
Чи можливо якось перед початком роботи mysqldump виконати SET NAMES 'utf8' або, що аналогічно, встановити змінні: SET character_set_client = utf8; SET character_set_results = utf8; SET character_set_connection = utf8; .
Якщо прописати --default-character-set=utf8 для mysqldump, також не допомагає. Якщо прописати в
– аналогічно, не допомагає.
P. S. Дампіти в 1251, а потім конвертувати через iconv в utf8 не можу, тому що деякі таблиці зберігають бінарні дані і iconv просто не хоче конвертувати такий дамп.
У техпідтримці відповіли таке:
Про sypex-дампер давно знаю, він впорається з цим завданням. Але його завжди вважав останнім рішенням, яке використовуватиму. Мені взагалі в результаті треба отримати систему перекачування резервних копій сайту на мій комп, тому адаптувати sypex до цього завдання не дуже хочеться.
Взагалі, якщо возитися з mysqldump, можна просто в вихідні дані забити виконання запиту SET NAMES 'utf8' перед початком роботи, але це може обійтися за часом дорожче, ніж використовувати sypex.
А крім mysqldump є якісь нитки альтернативи? Або може хтось уже переробляв mysqldump під таке завдання – де це можна подивитися?