1
resposta

ERRO 1436

Estava acompanhando a aula sobre triggers. executei o seguinte código:

DELIMITER //
CREATE TRIGGER TG_CALCULA_FATURAMENTO_INSERT AFTER INSERT ON ITENS_NOTAS
FOR EACH ROW BEGIN
    DELETE FROM TAB_FATURAMENTO;
    INSERT INTO TAB_FATURAMENTO
    SELECT A.DATA_VENDA, SUM(B.QUANTIDADE * B.PRECO) AS TOTAL_VENDA
    FROM NOTAS A INNER JOIN ITENS_NOTAS B
    ON A.NUMERO = B.NUMERO
    GROUP BY A.DATA_VENDA;
END //

Depois disso, tentei executar um INSERT:

INSERT INTO NOTAS (NUMERO, DATA_VENDA, CPF, MATRICULA, IMPOSTO)
VALUES ("0100", "2022-09-01", "1471156710", "235", 0.10);
INSERT INTO ITENS_NOTAS (NUMERO, CODIGO, QUANTIDADE, PRECO)
VALUES ("0100", "1000889", 100, 10), ("0100", "1002334", 100, 10);

Que retornou o seguinte erro:

*14:11:05 INSERT INTO ITENS_NOTAS (NUMERO, CODIGO, QUANTIDADE, PRECO) VALUES ("0100", "1000889", 100, 10), ("0100", "1002334", 100, 10) Error Code: 1436. Thread stack overrun: 15688 bytes used of a 131072 byte stack, and 160000 bytes needed. Use 'mysqld --thread_stack=#' to specify a bigger stack. 0.000 sec *

Podem me ajudar, por favor? Entendi mais ou menos o motivo, mas não sei como resolvê-lo.

1 resposta

Oi, Guilherme! Tudo bem?

Peço desculpas pela demora em retornar.

O erro 1436 indica que o MySQL não possui memória suficiente para executar a operação desejada. Para contornar este problema, podemos seguir o passo a passo abaixo:

  1. Procurar pela pasta "UniServerZ" na barra de pesquisa do seu computador;

  2. Acesse esta pasta;

  3. Localizar e abrir a pasta "core";

  4. Localizar e abrir a pasta "mysql";

  5. Localizar o arquivo "my";

  6. Abrir o arquivo "my" com o bloco de notas;

  7. Procurar pela linha em que está escrito "thread_stack = 128K":

    Arquivo "my" no bloco de notas com destaque à linha "thread_stack = 128K"

  8. Substituir o número 128 pelo 256:

    Arquivo "my" no bloco de notas com destaque à linha "thread_stack = 256K"

    Com isso, aumentamos a pilha de memória do MySQL, que é uma região da memória utilizada para armazenar, por exemplo, informações sobre execução de operações).

  9. Salvar o arquivo pressionando CTRL+S;

  10. Fechar o seu MySQL Workbench;

  11. Reiniciar o servidor MySQL por meio do UniController;

  12. Abrir novamente o MySQL Workbench;

  13. Agora basta executar os seus INSERT's, Guilherme!

Espero ter ajudado com a explicação. Caso o problema persista ou surjam novas dúvidas, fico à disposição.

Um forte abraço!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!