max-allowed-packet

12
[Удален]
2385

Собственно есть дамп с Макхоста размером 120МБ, сейчас решил перенести на другох хост, но залить в базу никак не могу, всё сводиться к проблеме max-allowed-packet. Увеличивать максимально допустимый размер запроса хостер отказываеться. Пробывал заливать Supex Dumper'ом, пробовал разбивать на несколько частей и грузить через phpmyadmin, также обращался к хостеру с просьбой залить его, но в результате получил ответ: "К сожалению текущий дамп не удается залить штатными средствами. Вам необходимо переснять дамп таким образом.

mysqldump -Q --max-allowed-packet=1M --extended-insert=false -u dbuser -p

dbname > dump.sql" Но переснять сейчас его у mchost возможности нет. Есть ли какие скрипты или програмки для преобразования дамп-файла? т.к ставить всё это дело на локалку и переснимать бекап очень проблематично будет..

Ещё вопрос, никогда не работал с SSH, но насколько я знаю, если заливать через него ошибки этой быть не может?

F
На сайте с 16.01.2010
Offline
267
#1

Могу посоветовать хорошую сборку для локального пользования apache+php+mysql, всё в одном установщике, удобная админка (висит в трее когда запущено), устанавливает без каких либо навыков за 1 минуту, в общем это vertrigo

http://vertrigo.sourceforge.net/?lang=ru

[umka]
На сайте с 25.05.2008
Offline
456
#2

futuristian, вы это вообще к чему?!

Mental, эту ошибку выдаёт mysql. Поэтому, при попытке залить через ssh будет та же проблема.

Какого рода информация в базе? Я полагаю, вы в ней храните какой-то громоздкий медиа-контент в полях типа BLOB :)

Варианты у вас следущие:

1. Наиболее правильный с моей точки зрения. Развернуть дамп на локальном компьютере. Выковырять из него медиа-контент и перенести его в файлы. Сделать новый дамп, залить на хост.

2. Найти хостера, у которого max_allowed_packed дотягивает до нужной вам величины. Думаю, это будет не так просто.

3. Наиболее сложный и затратный. Купить VPS, поставить на нём свой mysql с желаемым max_allowed_packet

[umka] добавил 06.05.2010 в 20:53

p.s. если же всё дело в том, что у вас каждая таблица вставляется одним запросом (все строки одним insert-ом), то самый простой способ будет развернуть дамп на локалке, и снять его с параметром --complete-insert.

Лог в помощь!
[Удален]
#3

База vbulletin, информации много, поэтому такой и объём, картинки и файлы в базе не храняться. Вы правы, все записи таблицы вставляються одним Insert'ом. Сейчас какраз на локалке уже разворачиваю дамп, посмотрим, что получиться.

N
На сайте с 06.05.2007
Offline
419
#4

Инсерт там не один.

Вам необходимо переснять дамп таким образом.
mysqldump -Q --max-allowed-packet=1M --extended-insert=false

правильный параметр mysqldump, который влияет на размеры в этом случае net_buffer_length =16мб.

Хотя --extended-insert=false в принципе тоже сделает работающий дамп, хоть и не оптимально.

Кнопка вызова админа ()
F
На сайте с 16.01.2010
Offline
267
#5
'[umka:
;6863122']futuristian, вы это вообще к чему?!

К тому что очень часто нужно что-то слить и где-то потестировать, монстры типа Дэнвера ужасны. А при условии, что старый хостинг уже не работает, а новый пока не получается использовать, вот тут и появляется промежуточное звено - сделать какие-либо операции локально.

Кстати, Mental, а что у вас за хостинг такой? Чтобы обходить стороной

[umka]
На сайте с 25.05.2008
Offline
456
#6
Mental:
База vbulletin, информации много, поэтому такой и объём, картинки и файлы в базе не храняться. Вы правы, все записи таблицы вставляються одним Insert'ом. Сейчас какраз на локалке уже разворачиваю дамп, посмотрим, что получиться.

Значит у вас в дампе всё одним INSERT-ом.

Юзайте вариант из p.s., должно помочь :)

[Удален]
#7

Переделал запрос, теперь каждая запись добавляеться через insert, но ошибку всеровно выдаёт, видимо есть длинные записи . Ограничение у хостинга в 1 МБ (sweb).


INSERT INTO `phrase` VALUES ('81125', '-1', 'pollclosed', 'error', 'The poll you selected is closed. Please press back to return to the poll.', 'vbulletin', '', '0', '');
INSERT INTO `phrase` VALUES ('81126', '-1', 'polloptionlength', 'error', 'Poll options cannot exceed {1} characters. Option(s) <b>{2}</b> exceed this limitation.', 'vbulletin', '', '0', '');

Может кто знает хостеров, у которых нет этого ограничения и с нормальной тех.поддержкой? Т.к если каждый раз придётся с этим мучатся - не вариант.

[umka]
На сайте с 25.05.2008
Offline
456
#8

max_allowed_packet = 1M — это дефолтная настройка mysql.

И у подавляющего большинства она такая и есть.

И не увеличивают с целью борьбы с хранением в базе медиа-контента :)

Мой совет, всё-таки стремиться к универсальности/гибкости/мобильнсти, и решать проблему на своей стороне.

[Удален]
#9

Да, но некоторые хотя бы заливают дамп по просьбе клиентов, мне так вначале и ответили на sweb, чтоб им предоставили дамп и они всё сделают (решат проблему эту) но в результате ничего.

[umka]
На сайте с 25.05.2008
Offline
456
#10

Заливать-то заливают, но тут проблема в другом.

Заливают они тем же способом. Т.е. чтобы его залить, нужно изменить конфигурацию и перезапустить mysql, залить дамп, изменить конфиг обратно, и еще раз перезапустить.

При этом, вы не сможете сделать выборку этой записи, т.к. она опять-таки не пролезет через этот max_allowed_packet :)

Вот такой расклад... как ни крути...

12

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