Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

MySQL: Error Code: 1292 - Incorrect datetime

Pessoal, eu tô tentando alterar a tabela de Atendimentos, seguindo o exemplo das aulas, para adicionar as colunas data e dataCriacao, mas é retornado o seguinte erro:

20:05:30    ALTER TABLE `agenda-petshop-alura`.Atendimentos ADD data datetime NOT NULL, ADD dataCriacao datetime NOT NULL    Error Code: 1292. Incorrect datetime value: '0000-00-00 00:00:00' for column 'data' at row 1 0.00073 sec

Como posso resolver isso?

2 respostas
solução!

Olá Bruno,

Este erro aparentemente está ocorrendo pois sua tabela já se encontra populada com dados e você está tentando inserir novos campos NOT NULL. Desta forma, os dados já existentes violam a restrição de integralidade NOT NULL, pois implicitamente o Sistema Gerenciador de Banco de Dados irá atribuir valores NULL para os dados pré-existentes na tabela.

Existem duas formas de resolver isso:

1 - Não utilizando a restrição NOT NULL;

2 - Utilizando um valor DEFAULT explicito para que estes sejam populados nas tuplas já existentas.

Qual das duas soluções utilizar? Depende do seu projeto.

Supondo que você não queira utilizar um valor DEFAULT para novos cadastros, obrigando o cadastrador de dados do seu sistema forneça uma data válida para que a nova tupla seja criada na sua tabela, a solução para este problema é executar um ALTER TABLE criando os novos campos com um valor DEFAULT, populando assim as tuplas pré-existentes na tabela, e depois executar um novo ALTER TABLE alterando o campo criado sem definir um valor DEFAULT para o mesmo.

Após tentar realizar as minhas sugestões, dê um feedback para eu saber se funcionou.

Abraços

Oi Jefferson!

Funcionou, sim! Eu fiz um ALTER TABLE criando os campos com um valor DEFAULT, para popular as pré-existentes e depois alterei de novo, sem definir um valor, seguindo a sua dica. Não havia pensado por esse lado que você apontou, do erro ter sido por já ter dados na tabela, não sabia que ele atribuía NULL para os dados já existentes. Obrigado pela ajuda!

Abraço