Estou tendo um problema com os campos BLOB no meu banco de dados MySQL - ao enviar arquivos maiores que aproximadamente 1 MB, recebo um erro Packets larger than max_allowed_packet are not allowed.
Aqui está o que eu tentei:
No MySQL Query Browser, executei um show variables like 'max_allowed_packet'
que me deu 1048576.
Em seguida, executo a consulta set global max_allowed_packet=33554432
seguida por show variables like 'max_allowed_packet'
- ela me fornece 33554432 conforme o esperado.
Mas quando eu reinicio o servidor MySQL, ele volta magicamente para 1048576. O que estou fazendo de errado aqui?
Pergunta de bônus, é possível compactar um campo BLOB?
Respostas:
Altere o arquivo
my.ini
ou~/.my.cnf
incluindo a única linha em[mysqld]
ou[client]
seção em seu arquivo:depois reinicie o serviço MySQL e pronto.
Consulte a documentação para obter mais informações.
fonte
[mysqld]
e não[mysql]
(muito semelhante). Me custou alguns minutos de arranhar a cabeça.O max_allowed_packet variável pode ser configurada globalmente executando uma consulta.
No entanto, se você não o alterar no
my.ini
arquivo (como sugerido pelo dragon112), o valor será redefinido quando o servidor reiniciar, mesmo se você o definir globalmente.Para alterar o pacote máximo permitido para todos para 1 GB até o servidor reiniciar:
fonte
SHOW VARIABLES WHERE variable_name = 'max_allowed_packet'
ainda mostra o valor antigoUm dos meus desenvolvedores juniores estava tendo um problema ao modificar isso para mim, então pensei em expandir isso com mais detalhes para os usuários do Linux:
1) terminal aberto
2) raiz ssh @ YOURIP
3) digite a senha root
4) nano /etc/mysql/my.cnf (se o comando não for reconhecido, faça isso primeiro ou tente vi e repita: yum install nano)
5) adicione a linha: max_allowed_packet = 256M (obviamente ajuste o tamanho para o que você precisar) na seção [MYSQLD]. Ele cometeu um erro ao colocá-lo na parte inferior do arquivo primeiro, para que não funcionasse.
6) Control + O (salvar), depois ENTER (confirmar) e Control + X (sair do arquivo)
7) serviço mysqld restart
8) Você pode verificar a alteração na seção de variáveis no phpmyadmin
fonte
sudo: command not found
outhis incident will be reported
porquesudo
ainda não foram instaladas e configuradas. Seria melhor enviar esta resposta com instruções sobre como configurarsudo
pela primeira vez?Eu acho que alguns também gostariam de saber como encontrar o arquivo my.ini no seu PC. Para usuários do Windows, acho que a melhor maneira é a seguinte:
Eu obtive esta resposta em http://bugs.mysql.com/bug.php?id=68516
fonte
Seguindo todas as instruções, foi o que fiz e trabalhei:
Portanto, como podemos ver, o max_allowed_packet foi alterado fora do my.ini.
Vamos sair da sessão e verificar novamente:
Conclusão, após SET GLOBAL max_allowed_packet = 1073741824, o servidor terá o novo max_allowed_packet até que seja reiniciado, como alguém afirmou anteriormente.
fonte
Se você receber esse erro durante a execução de um backup,
max_allowed_packet
poderá ser configuradomy.cnf
especialmente paramysqldump
.Eu continuei recebendo este erro durante a execução de um
mysqldump
e eu não entendia porque eu tinha esse conjunto emmy.cnf
sob a[mysqld]
seção. Depois que eu descobri que poderia defini-lo[mysqldump]
e definir o valor, meus backups foram concluídos sem problemas.fonte
Para aqueles que executam o servidor wamp mysql
Ícone Wamp tray -> MySql -> my.ini
Role até o final até encontrar
Adicione a linha de packet_size entre
Verifique se funcionou com esta consulta
fonte
Este erro ocorreu devido aos seus dados conterem um valor maior que o definido.
Basta anotar
max_allowed_packed=500M
ou você pode calcular esses 500 * 1024k e usá-los em vez de 500M, se desejar.Agora basta reiniciar o MySQL.
fonte
/etc/my.cnf
, por exemplo, MySQL, ou/etc/my.cnf.d/server.cnf
para MariaDBMuitos dos respondentes descobriram o problema e já deram a solução.
Eu só quero sugerir outra solução, que está alterando o valor da variável Glogal de dentro da ferramenta Mysql Workbench . Claro que, se você usa o Workbench em execução localmente no servidor (ou via conexão SSH)
Você acabou de se conectar à sua instância e acessar o menu:
Você define o valor desejado e precisa reiniciar o serviço MySql .
fonte
Para qualquer pessoa que esteja executando o MySQL no serviço Amazon RDS, essa alteração é feita por meio de grupos de parâmetros . Você precisa criar um novo PG ou usar um existente (que não seja o padrão, que é somente leitura).
Você deve procurar o
max_allowed_packet
parâmetro, alterar seu valor e pressionar Salvar.De volta à sua instância do MySQL, se você criou um novo PG, você deve anexá-lo à sua instância (pode ser necessário reiniciar). Se você alterou um PG que já estava anexado à sua instância, as alterações serão aplicadas sem reinicialização em todas as suas instâncias que têm esse PG anexado.
fonte
Se você deseja fazer upload de imagens ou dados em tamanho grande no banco de dados. Apenas mude o tipo de dados para
'BIG BLOB'
.fonte
defina global max_allowed_packet = 10000000000;
fonte