Tempo limite de espera de bloqueio excedido; tente reiniciar a transação

12

Eu recebo esse erro repetidamente diariamente 4-5 vezes.

SQLSTATE [HY000]: Erro geral: 1205 Tempo limite de espera de bloqueio excedido; tente reiniciar a transação

Desta vez, reinicio o meu phpmyadmin, mas isso acontece várias vezes. Não consigo apontar esse problema.

Eu estou usando o Magento ver. 1.9.0.1 no site. Eu tenho mais de 7000 produtos. No servidor, tenho 16 GB de RAM.

Como consertar este problema?

Magento 2
fonte

Respostas:

8

Você deve considerar aumentar o valor do tempo limite de espera de bloqueio para o InnoDB configurando innodb_lock_wait_timeout , o padrão é 50 segundos

mysql> show variables like 'innodb_lock_wait_timeout';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| innodb_lock_wait_timeout | 50    |
+--------------------------+-------+
1 row in set (0.01 sec)

Você pode configurá-lo para um valor mais alto /etc/my.cnfpermanentemente com esta linha

[mysqld]
innodb_lock_wait_timeout=120

e reinicie o mysql. Se você não pode reiniciar o mysql neste momento, execute o seguinte:

SET GLOBAL innodb_lock_wait_timeout = 120; 

Você também pode configurá-lo para a duração da sua sessão

SET innodb_lock_wait_timeout = 120; 

seguido pela sua consulta

Arunendra
fonte
3
por que não 140 'ou 2000'? como isso poderia realmente resolver o problema? escondendo isso?
precisa saber é o seguinte
você tem um problema que faz com que as tabelas sejam bloqueadas mais do que o esperado. Se você fizer isso, forçará a espera de 2 minutos todas as vezes em vez de corrigir o problema uma vez. E como Elzo diz ... o que acontece quando 120 não é suficiente?
Carlos Robles
7

Você verá esta mensagem se o conteúdo do banco de dados que você está tentando acessar tiver sido bloqueado por um processo anterior (normalmente de longa execução). O MySQL aguardará uma certa quantidade de tempo para que o bloqueio seja removido antes de desistir e gerar esse erro. Se você conseguir rastrear quando estiver vendo essas mensagens de erro em qualquer horário consistente do dia, verifique o que mais o servidor está fazendo naquele momento - por exemplo, um backup de banco de dados em execução. Ao fazer isso, você poderá reduzir as possibilidades de quais processos podem estar criando o bloqueio, embora nem sempre seja tão fácil de fazer - provavelmente uma tentativa e erro.

Jonathan Hussey
fonte
5

A razão por trás desse problema é se você estiver executando muitos scripts personalizados e matando os scripts antes que a conexão com o banco de dados tenha chance de fechar.

Algo está bloqueando a execução da consulta. Provavelmente outra consulta atualizando, inserindo ou excluindo de uma das tabelas em sua consulta. Você precisa descobrir o que é isso:

Se você pode efetuar login no MySQL a partir da CLI e executar o seguinte comando

SHOW PROCESSLIST;

Depois de localizar o processo de bloqueio / suspensão, encontre-o ide execute:

KILL {id};

Execute novamente sua consulta inicial.

Pode ser que este link o ajude: SQLSTATE [HY000]: Erro geral: 1205 Tempo limite de espera do bloqueio excedido; tente reiniciar a transação Magento .

Rohit Kundale
fonte
2

aumente o tempo de execução no php.ini no servidor OU peça ao provedor de hospedagem.

Surya prakash Patel
fonte