Continue recebendo erros “MySQL server has away” durante a importação de linha de comando

1

Estou usando o seguinte comando para importar dados de um arquivo de 160 MB criado em outro servidor com o mysqldump. O ambiente para o qual estou importando está executando o servidor WAMP mais recente com max_allowed_packet definido como "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

Isso parece ocorrer consistentemente após aproximadamente 39 segundos e 85,5 MB importados.

Eu li muitas sugestões sobre como aumentar max_allowed_packet em my.ini, então eu fiz para 16M em vez do padrão de 1M. No entanto, o erro que estou recebendo persiste, não importa o que eu faça. Alguma idéia?

Agora resolvido em 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
    
por MattB 05.08.2010 / 23:44

3 respostas

3

Qual é a estrutura de dados no sql?

É possível que uma coluna seja um blob, talvez uma imagem ou um PDF maior que 16M. Por que não definir o max_allowed_packet como 160MB (como nenhum pacote pode ser maior que o tamanho do arquivo inteiro) e testá-lo novamente, você sempre poderá alterná-lo novamente mais tarde.

Você pode obter um valor mais preciso se obtiver os dados importados usando o comando SHOW TABLE STATUS para obter os tamanhos dos dados e, em seguida, você verá o tamanho que deve ser.

No entanto, o erro é muito geral e há uma lista de possíveis razões para você ver o erro no site mysql

Você terá que trabalhar com cada um para localizar o problema, mas na minha experiência, sempre foi um pacote muito grande. Eu tenho max_packet_size definido para 180MB em uma das minhas caixas de produção, por isso mesmo.

    
por 06.08.2010 / 00:05
0

tente subir o wait_timeout para gostar de 100 no seu my.cnf e depois reiniciar o servidor

wait_timeout = 100
    
por 06.08.2010 / 00:09
0

Enquanto a resposta de Richard é a solução comum, verifique seu .err log. É possível que o MySQL esteja ficando sem memória e reiniciando. Eu também tive isso recentemente com hardware com falha.

    
por 06.08.2010 / 15:29

Tags