Endy Опубликовано 8 Марта 2010 Жалоба Поделиться Опубликовано 8 Марта 2010 Планирую купить v.3.3 У меня рабочая версия 2.1.7. Подскажите, будут ли проблемы с перенесением базы данных? Ссылка на комментарий Поделиться на других сайтах Прочее
0 Endy Опубликовано 20 Марта 2010 Автор Жалоба Поделиться Опубликовано 20 Марта 2010 (изменено) С дефолтными да. Поэтому и нужен запрос character_set к текущей базе, что бы понять, что выставить в параметре --default-character-set=? Если делать запрос к старой базе: character_set_client utf8 character_set_connection utf8 character_set_database latin1 character_set_filesystem binary character_set_results utf8 character_set_server latin1 character_set_system utf8 А если к новой базе форума: character_set_client utf8 character_set_connection utf8 character_set_database utf8 character_set_filesystem binary character_set_results utf8 character_set_server latin1 character_set_system utf8 Изменено 20 Марта 2010 пользователем Endy Ссылка на комментарий Поделиться на других сайтах Прочее
0 Ph-A Опубликовано 20 Марта 2010 Жалоба Поделиться Опубликовано 20 Марта 2010 Если делать запрос к старой базе:Гм ... Когда SypexDumper делает бекап, он какую кодировку таблиц определяет? В conf_global.php есть строчка -- $INFO['mysql_codepage'] = '?'; Ссылка на комментарий Поделиться на других сайтах Прочее
0 Endy Опубликовано 20 Марта 2010 Автор Жалоба Поделиться Опубликовано 20 Марта 2010 (изменено) Если делать запрос к старой базе:Гм ... Когда SypexDumper делает бекап, он какую кодировку таблиц определяет? А когда SypexDumper делает копию, то если в браузере стоит UTF8, буквы портятся. Я уже пробовал в этом dumper.php скрипте менять кодировку на UTF8, но никакого результата это не дало. В conf_global.php есть строчка -- [code]$INFO['mysql_codepage'] = '?';Там стоит "utf8" Попробовал делать дамп с mysqldump, потом перекодировка и восстановление. Не помогло. Изменено 20 Марта 2010 пользователем Endy Ссылка на комментарий Поделиться на других сайтах Прочее
0 Ph-A Опубликовано 20 Марта 2010 Жалоба Поделиться Опубликовано 20 Марта 2010 А когда SypexDumper делает копию, то если в браузере стоит UTF8Я не о том. SypexDumper при работе пишет Подключение к БД `bitrix`. Создание файла с резервной копией БД: - bitrix_2010-03-20_17-56.sql ------------------------------------------------------------ Установлена кодировка соединения `cp1251`. Обработка таблицы `b_agent` [11]. Установлена кодировка соединения `utf8`. Обработка таблицы `b_blog` [4].Вот интересны значение -- Установлена кодировка соединения... Там стоит "utf8"А нужна ли перекодировка таблиц .... (мысли вслух). Попробовал делать дамп с mysqldump,С параметром --default-character-set=latin1 ? потом перекодировка и восстановление. Не помогло.Я бы не перекодировал пока. Главная цель, получить нормально читаемый дамп. А потом, поменять кодировку, уже проще. Ссылка на комментарий Поделиться на других сайтах Прочее
0 Endy Опубликовано 23 Марта 2010 Автор Жалоба Поделиться Опубликовано 23 Марта 2010 (изменено) В клиент-центре подсказали правильное решение. Делаем запрос для каждой таблицы по-отдельности ALTER TABLE`ibf_topics` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci, CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;итд. для всех таблиц. Естественно всё это можно вставить в один SQL запрос. Теперь экспортируем базу данных. Мне пришлось экспортировать также по таблицам, потому что ограничения на сервере не давали потом сделать импорт базы 90Мb. Чтобы упростить себе жизнь написал пару маленьких bash скриптов. Этот делает дамп с каждой таблицы в базе данных и сохраняет его в каталоге "tables". Список таблиц надо предварительно сохранить в файле "pattern"#!/bin/sh file=pattern mysqldump='/usr/local/mysql-5.1.39-linux-i686-glibc23/bin/mysqldump -u USER_NAME -pPASSWORD BASE_NAME' cat $file | while read line; do if [ $line ]; then $mysqldump --tables $line > tables/$line echo -ne 'Создан дамп для таблицы: '$line'' echo tput sgr0 echo fi done Теперь дампы таблиц нужно дважды перекодировать. Честно говоря, я не понял почему. $ iconv -c -f utf8 -t latin1 ibf_topics.sql > test $ iconv -f cp1251 -t utf8 test > final Я сделал перекодирование этим скриптом.#!/bin/bash file=pattern cat $file | while read line; do if [ $line ]; then iconv -c -f utf8 -t latin1 tables/$line > test iconv -f cp1251 -t utf8 test > $line rm -f test echo "OK" fi done Всё. Восстанавливаем дамп любым доступным способом. Поскольку у меня есть SSH доступ, немного автоматизировал этот процесс. #!/bin/bash file=pattern cat $file | while read line; do if [ $line ]; then mysql -u USER_NAME -pPASSWORD BASE_NAME < $line echo "Restore from dump '$line' is done" fi done Вот и всё. Делем апгрейд и форум в порядке! Огромное спасибо клиент-центру за точный и оперативный ответ и P(A) и Ritsuka за участие и помощь! Изменено 23 Марта 2010 пользователем Endy Ссылка на комментарий Поделиться на других сайтах Прочее
Вопрос
Endy
Ссылка на комментарий
Поделиться на других сайтах
30 ответов на этот вопрос
Рекомендуемые сообщения