
Я использую следующую команду для импорта данных из файла размером 160 МБ, созданного на другом сервере с помощью mysqldump. Среда, в которую я импортирую, использует новейший сервер WAMP с max_allowed_packet, установленным на "16M".
C:\wamp\bin\mysql\mysql5.1.36\bin>mysql --max_allowed_packet=15M -u root -pXXX drupal < C:\prod.sql
ERROR 2006 (HY000) at line 644: MySQL server has gone away
Похоже, это происходит постоянно примерно через 39 секунд после импорта 85,5 МБ.
Я прочитал много предложений по увеличению max_allowed_packet в my.ini, поэтому я сделал это до 16M вместо значения по умолчанию 1M. Однако ошибка, которую я получаю, сохраняется, что бы я ни делал. Есть идеи?
Теперь решено в my.ini:
[wampmysqld]
port = 3306
socket = /tmp/mysql.sock
key_buffer = 384M
max_allowed_packet = 100M
table_cache = 4096
sort_buffer_size = 2M
net_buffer_length = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 64M
myisam_sort_buffer_size = 64M
basedir=c:/wamp/bin/mysql/mysql5.1.36
log-error=c:/wamp/logs/mysql.log
datadir=c:/wamp/bin/mysql/mysql5.1.36/data
thread_cache_size = 8
query_cache_size = 32M
innodb_buffer_pool_size = 384M
innodb_additional_mem_pool_size = 20M
# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 10M
innodb_log_buffer_size = 64M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 100
wait_timeout = 28800
[mysqldump]
quick
max_allowed_packet = 100M
[isamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
[myisamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
решение1
Какова структура данных в SQL?
Возможно, один столбец — это blob, возможно, изображение или PDF, размер которого превышает 16 МБ. Почему бы не установить max_allowed_packet на 160 МБ (поскольку ни один пакет не может быть больше размера всего файла) и не протестировать его снова, вы всегда сможете вернуть его обратно позже.
Вы можете получить более точное значение, если импортируете данные, используя команду SHOW TABLE STATUS для получения размеров данных, и тогда вы увидите, насколько большими они должны быть.
Однако эта ошибка носит очень общий характер, и существует список возможных причин, по которым вы видите эту ошибку.на сайте mysql
Вам придется пройти через каждый из них, чтобы обнаружить проблему, но по моему опыту, это всегда был слишком большой пакет. Я установил max_packet_size на 180 МБ на одном из моих производственных ящиков именно по этой причине.
решение2
попробуйте увеличить wait_timeout до 100 в вашем my.cnf, а затем перезапустите сервер
wait_timeout = 100
решение3
Хотя ответ Ричарда является общим решением, проверьте ваш .err
журнал. Возможно, MySQL исчерпывает память и перезапускается. У меня тоже недавно такое случалось с отказавшим оборудованием.