Estou importando um despejo do MySQL e recebendo o seguinte erro.
$ mysql foo < foo.sql
ERROR 1153 (08S01) at line 96: Got a packet bigger than 'max_allowed_packet' bytes
Aparentemente, existem anexos no banco de dados, o que resulta em inserções muito grandes.
Este é na minha máquina local, um Mac com o MySQL 5 instalado a partir do pacote MySQL.
Onde eu mudo max_allowed_packet
para poder importar o despejo?
Há mais alguma coisa que devo definir?
Apenas a execução mysql --max_allowed_packet=32M …
resultou no mesmo erro.
Respostas:
Você provavelmente precisará alterá-lo para o cliente (você está executando a importação) E o daemon mysqld que está executando e aceitando a importação.
Para o cliente, você pode especificá-lo na linha de comando:
Além disso, altere o arquivo my.cnf ou my.ini na seção mysqld e defina:
ou você pode executar estes comandos em um console MySQL conectado ao mesmo servidor:
(Use um valor muito grande para o tamanho do pacote.)
fonte
max_allowed_packet
100 MB?Como michaelpryor disse, você tem que mudá-lo para tanto o cliente e o servidor mysqld daemon.
Sua solução para a linha de comando do cliente é boa, mas os arquivos ini nem sempre funcionam, dependendo da configuração.
Portanto, abra um terminal, digite mysql para obter um prompt do mysql e execute estes comandos:
Mantenha o prompt do mysql aberto e execute a execução do SQL da linha de comando em um segundo terminal.
fonte
Isso pode ser alterado no seu
my.ini
arquivo (no Windows, localizado em \ Arquivos de Programas \ MySQL \ MySQL Server) na seção servidor, por exemplo:fonte
Re my.cnf no Mac OS X ao usar o MySQL na distribuição do pacote mysql.com dmg
Por padrão, o my.cnf não é encontrado em nenhum lugar.
Você precisa copiar um
/usr/local/mysql/support-files/my*.cnf
para/etc/my.cnf
e reiniciarmysqld
. (O que você pode fazer no painel de preferências do MySQL, se você o instalou.)fonte
No etc / my.cnf, tente alterar o max_allowed _packet e o net_buffer_length para
se isso não funcionar, tente mudar para
fonte
A correção é aumentar o max_allowed_packet do daemon MySQL. Você pode fazer isso em um daemon em execução, efetuando login como Super e executando os seguintes comandos.
Em seguida, importe seu dump:
fonte
No CENTOS 6 /etc/my.cnf, na seção [mysqld] a sintaxe correta é:
fonte
Use uma
max_allowed_packet
variável que emita um comando comomysql --max_allowed_packet=32M -u root -p database < dump.sql
fonte
Ligeiramente não relacionado ao seu problema, então aqui está um para o Google.
Se você não mysqldump o SQL, pode ser que seu SQL esteja quebrado.
Acabei de receber esse erro por ter acidentalmente uma literal de cadeia não fechada no meu código. Dedos desleixados acontecem.
Essa é uma mensagem de erro fantástica para obter uma string em fuga, obrigado por esse MySQL!
fonte
max_allowed_packet
erro. Se ajuda para aqueles que, no futuro, eu estava inserindo usando o API pandasdf.to_sql(...)
Às vezes, digite a configuração:
no my.ini não está funcionando.
Tente determinar o my.ini da seguinte maneira:
ou
Em seguida, reinicie o servidor:
fonte
É um risco de segurança ter
max_allowed_packet
um valor mais alto, pois um invasor pode enviar pacotes de tamanho maior e travar o sistema.Portanto, o valor ideal
max_allowed_packet
para ser ajustado e testado.É melhor mudar quando necessário (usando
set global max_allowed_packet = xxx
) do que tê-lo como parte do my.ini ou my.conf .fonte
Estou trabalhando em um ambiente de hospedagem compartilhada e hospedei um site baseado no Drupal. Não consigo editar o
my.ini
arquivo oumy.conf
arquivo também.Portanto, excluí todas as tabelas relacionadas
Cache
e, portanto, posso resolver esse problema. Ainda estou procurando uma solução / maneira perfeita para lidar com esse problema.Editar - Excluir as tabelas criou problemas para mim, porque Drupal esperava que essas tabelas existissem. Então esvaziei o conteúdo dessas tabelas que resolveu o problema.
fonte
Erro:
INQUERIR:
Valor máximo:
fonte
Defina max_allowed_packet para o mesmo (ou mais) do que era quando você o jogou com o mysqldump. Se você não puder fazer isso, faça o despejo novamente com um valor menor.
Ou seja, supondo que você o tenha despejado com o mysqldump. Se você usou outra ferramenta, está por sua conta.
fonte