2
respostas

[Dúvida] Error code 1406

Pra mim está dando esse erro:

Error Code: 1406. Data too long for column 'vProduto' at row 1

O que está errado? Fiz a Stored Procedure igual do Instrutor

2 respostas

Tentei resolver esse problema e a solução que eu encontrei foi tirar o número 1 como default da variável vContador, não sei se está correto, mas não deu mais nenhum erro.


```CREATE DEFINER=`root`@`localhost` PROCEDURE `p_inserir_venda`(vData DATE, max_itens INT, max_quantidade INT)
BEGIN
DECLARE vCliente VARCHAR(11);
DECLARE vProduto VARCHAR(10);
DECLARE vVendedor VARCHAR(5);
DECLARE vQuantidade INT;
DECLARE vPreco FLOAT;
DECLARE vItens INT;
DECLARE vNumero_Nota INT;
DECLARE vContador INT;
SELECT MAX(NUMERO) + 1 INTO vNumero_Nota FROM notas_fiscais;
SET vCliente = f_cliente_aleatorio();
SET vVendedor = f_vendedor_aleatorio();
INSERT INTO notas_fiscais(CPF, MATRICULA, DATA_VENDA, NUMERO, IMPOSTO)
VALUES(vCliente, vVendedor, vData, vNumero_Nota, 0.18);
SET vItens = f_numero_aleatorio(1, max_itens);
WHILE vContador <= vItens
DO
    SET vProduto = f_produto_aleatorio();
    SET vQuantidade = f_numero_aleatorio(10, max_quantidade);
    SELECT PRECO_DE_LISTA INTO vPreco FROM tabela_de_produtos WHERE CODIGO_DO_PRODUTO = vProduto;
    INSERT INTO itens_notas_fiscais(NUMERO, CODIGO_DO_PRODUTO, QUANTIDADE, PRECO)
    VALUES(vNumero_nota, vProduto, vQuantidade, vPreco);
    SET vContador = vContador + 1;
END WHILE;
END

Olá, Patrícia, tudo bem?

O erro ocorre porque os dados de entrada eram muito longos para a coluna em uma tabela de banco de dados.

Definimos 'vProduto' como VARCHAR(5) . Isso significa que o valor inserido nessa coluna não deve ter mais de 5 caracteres. Se o valor que você está tentando inserir tem mais de 5 caracteres, você encontrará o erro 1406.

Para resolver esse problema, você pode verificar o valor que está tentando inserir na coluna 'vProduto'.

No entanto, notei que conseguiu resolver o problema. Que bom! Fico feliz que chegou a uma solução.

Caso surja alguma dúvida, é só compartilhar no fórum.

Abraços e até mais!