Ошибка при залвке форумной базы mysql

antono
На сайте с 12.07.2004
Offline
303
695

Скачкал дамп базы со старого хостинга, залил на другой. Через ssh пытаюсь вставит дамп в базу mysql:

mysql -uuser -p -hlocalhost user_data < forum_data.sql

... и получаю такую ошибку:

ERROR 1153 (08S01) at line 3030: Got a packet bigger than 'max_allowed_packet' bytes

В строке 3030 дампа начинаются длинные строчки - по 15-20 кбайт каждая.

Что здесь можно сделать если не трогать настройки mysql ?

Erick Flatcher
На сайте с 05.02.2002
Offline
216
#1

а дык может она побилась? может стоит еще раз дамп сделать? или кусками через phpMyAdmin...

K
На сайте с 24.03.2004
Offline
223
#2
antono:

В строке 3030 дампа начинаются длинные строчки - по 15-20 кбайт каждая.
Что здесь можно сделать если не трогать настройки mysql ?

Можно длинные строчки побить с помощью скрипта. Т.е. преобразовать так, что сначала будет insert, а потом уже нужное количество update с приклеиванием оставшихся кусков к нужному полю из нужной записи.

Это не только с дампами такой нюанс, а еще и с вставкой blob-ов в базу. Как-то не хотелось мне ковырять хостинг и клиентам рекомендовал вставлять за несколько операций.

Можно поискать примеры работы вставки с учетом max_allowed_packet -> http://www.google.com/codesearch?q=lang%3Aphp+max_allowed_packet

PS. Может на codesearch и утилитку какую-то найдете.

проверенная ддос защита (http://ddos-protection.ru) -> http://ddos-protection.ru (http://ddos-protection.ru), бесплатный тест, цена от размера атаки не зависит.
antono
На сайте с 12.07.2004
Offline
303
#3
kostich:
Можно длинные строчки побить с помощью скрипта. Т.е. преобразовать так, что сначала будет insert, а потом уже нужное количество update с приклеиванием оставшихся кусков к нужному полю из нужной записи.

Спасибо, видимо так и придется делать.

Еще проблемма с кодировкой, MySQL работает в кодировке UTF8 unicode, таблицы создавал и в utf8 и в cp1251, дамп тоже делал и в кодировке utf8 и в cp1251, самое лучшее что получил это "&#204;&#229;&#228;&#232;&#246;&#232;&#237;&#224; &#232; &#231;&#228;&#238;&#240;&#238;&#226;&#252;&#229;", в худшем "??????????". Никто не сталкивался с подобным? Уже несколько часов бьюсь.

K
На сайте с 24.03.2004
Offline
223
#4
antono:
самое лучшее что получил это "&#204;&#229;&#228;&#232;&#246;&#232;&#237;&#224; &#232; &#231;&#228;&#238;&#240;&#238;&#226;&#252;&#229;", в худшем "??????????". Никто не сталкивался с подобным? Уже несколько часов бьюсь.

Получил где? Попробуй это просмотреть там где юникод показывает, т.к. при вставке в обычный редактор именно это и получишь.

antono
На сайте с 12.07.2004
Offline
303
#5
kostich:
Получил где? Попробуй это просмотреть там где юникод показывает, т.к. при вставке в обычный редактор именно это и получишь.

Получил это в phpmyadmin. Решил проблемму вставкой в начало дампа строчек:

set character_set_client='cp1251';

set character_set_results='cp1251';

set collation_connection='cp1251_general_ci';

K
На сайте с 24.03.2004
Offline
223
#6
antono:
Получил это в phpmyadmin.

надо получать в .sql файл какой-то, а потом уже его в notepad рассмотреть, т.к. последний utf нормально показывает... а вот браузер, которому подсунили чарсет виндовый, а потом уже utf внутри страницы, он кракозяблами отображать и будет...

PS. бНОПНЯ..

AH
На сайте с 18.03.2006
Offline
204
#7

для бэкапа и восстановления MySQL хороший инструмент:

http://zapimir.net/skdumper

Дампы любых размеров импортирует.

Цены на регистрацию доменов ( https://1reg.online/domains.price ).
antono
На сайте с 12.07.2004
Offline
303
#8

Спасибо всем! Все перенесено нормально, просто много времени убил на эту кодировку. Ну зато приобрел некоторый опыт :)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий