MySQL, импорт дампа и ошибки "out of memory" и "max_allowed_packet"

среда, 16 мая 2012 г.

Появилась необходимость залить довольно большой дамп базы на сервер (Debian) и сначала получил ошибку про max_allowed_packet - мол превышает. Чтобы избавиться от ошибки пришлось пойти в /etc/mysql/my.cnf, найти там параметр

[mysqld]
....
max_allowed_packet    =   16M

Изменил значение на 1024M, сохранил файл, вышел и в консоли перезапустил mysql сервер

/etc/init.d/mysql restart


Дальше открываю свою любимую программу для работы с базами - Navicat и пытаюсь залить дамп снова на сервер. Ошибку про max_allowed_packet я не получаю, но зато получаю ошибку про Out of memory.

В этом случае я нашел один наиболее простой и понятный выход.
Идем по ssh на сервер (я был под root) и пишем:

mysql -u user_name -p -q -h db_server_name db_name < /path/to/mysql_dump.sql

user_name - имя пользователя, который работает с нужной вам базой
db_server_name - имя сервера БД (в моем случае был просто localhost)
db_name - имя нужной вам базы данных, куда заливается дамп

Самым важным моментом является тут аргумент -q (или -quick), который позволяет писать данные из дампа напрямую на диск, без занесения данных в оперативную память.

Надеюсь, вопросов не возникнет. Если что - прошу в комментарии =)

Copyright © 2010 WEB IT blog