Eu tenho um problema estúpido com o SQL que não consigo consertar.
ALTER TABLE `news` ADICIONE `dataAdded` DATETIME NOT NULL PADRÃO CURRENT_TIMESTAMP AUTO_INCREMENT, ADICIONE CHAVE PRIMÁRIA (`data adicionada`)
Erro:
(#1067)Invalid default value for 'dateAdded'
Alguém pode me ajudar?
AUTO_INCREMENT
DATETIME
?Respostas:
CURRENT_TIMESTAMP
só é aceitável emTIMESTAMP
campos.DATETIME
os campos devem ser deixados com um valor padrão nulo ou nenhum valor padrão - os valores padrão devem ser um valor constante, não o resultado de uma expressão.documentos relevantes: http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html
Você pode contornar isso definindo um gatilho pós-inserção na tabela para preencher um valor "agora" em quaisquer novos registros.
fonte
CURRENT_TIMESTAMP
é específico da versão e agora é permitido paraDATETIME
colunas a partir da versão 5.6.Veja a documentação do MySQL .
fonte
Observe também que ao especificar
DATETIME
comoDATETIME(3)
ou como no MySQL 5.7.x, você também deve adicionar o mesmo valor paraCURRENT_TIMESTAMP(3)
. Caso contrário, continuará apresentando ' Valor padrão inválido '.fonte
Eu tive o mesmo problema, a seguinte correção resolveu meu problema.
Selecione o tipo como 'TIMESTAMP'
NÃO INSIRA NADA NO CAMPO COMPRIMENTO / VALORES. MANTENHA EM BRANCO
Selecione CURRENT_TIMESTAMP como valor padrão.
Estou usando o MySQL versão 5.5.56
fonte
Eu tenho mysql versão 5.6.27 em meu LEMP e CURRENT_TIMESTAMP como valor padrão funciona bem.
fonte
mysql versão 5.5 definir o valor padrão de data e hora como CURRENT_TIMESTAMP será um erro de relatório que você pode atualizar para a versão 5.6, ele define o valor padrão de data e hora como CURRENT_TIMESTAMP
fonte
Mude o tipo de datetime para timestamp e funcionará! Eu tive o mesmo problema com mysql 5.5.56-MariaDB - MariaDB Server Espero que possa ajudar ... desculpe se obsoleto
fonte