Valor predeterminado no válido para "dateAdded"

90

Tengo un problema estúpido con SQL que no puedo solucionar.

ALTER TABLE `noticias` 
 ADD `dateAdded` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP AUTO_INCREMENT,
 AÑADIR CLAVE PRIMARIA (`dateAdded`)

Error:

(#1067)Invalid default value for 'dateAdded'

¿Puede alguien ayudarme?

Robin Van den Broeck
fuente
8
Esta puede ser una pregunta estúpida, pero ¿por qué lo haces tú AUTO_INCREMENT DATETIME?
jave.web

Respuestas:

137

CURRENT_TIMESTAMPsolo es aceptable en los TIMESTAMPcampos. DATETIMElos campos deben dejarse con un valor predeterminado nulo o sin ningún valor predeterminado; los valores predeterminados deben ser un valor constante, no el resultado de una expresión.

documentos relevantes: http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html

Puede solucionar esto configurando un activador posterior a la inserción en la tabla para completar un valor "ahora" en cualquier registro nuevo.

Marc B
fuente
70
Parece que a partir de mysql 5.6.5, puede usar CURRENT_TIMESTAMP con los campos DATETIME. Ver dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html
Frank Schwieterman
2
Gracias Frank, encontré este problema al intentar importar una base de datos exportada desde el último xampp a uno anterior.
El HCD
El HCD, Frank ... encontró el mismo problema al exportar de MariaDb 10.xa MariaDB 5.5 ... gracias
Aukhan
1
Este error también ocurre en mariadb 5.5. Actualice a mariadb 10 y está resuelto. Gracias Frank
Samuel Tesler
50

CURRENT_TIMESTAMPes específico de la versión y ahora está permitido para DATETIMEcolumnas a partir de la versión 5.6.

Consulte los documentos de MySQL .

David Soussan
fuente
9
Estás seguro ? Recibo el error anterior en la versión 5.7.x
Ramesh Pareek
16

También tenga en cuenta que al especificar DATETIMEcomo DATETIME(3)o me gusta en MySQL 5.7.x, también debe agregar el mismo valor para CURRENT_TIMESTAMP(3). De lo contrario, seguirá arrojando ' Valor predeterminado no válido '.

Torsten Ojaperv
fuente
Esto me resolvió el problema en 5.7.x. Mis campos de fecha y hora se definieron como fecha y hora (6) y el uso de CURRENT_TIMESTAMP (6) resolvió el problema
Brad
Esto es muy digno de mención.
Mateus Felipe
1

Tuve el mismo problema, la siguiente solución resolvió mi problema.

  • Seleccione el tipo como 'TIMESTAMP'

  • NO ENTRE NADA EN EL CAMPO LONGITUD / VALORES. MANTÉNGALO EN BLANCO

  • Seleccione CURRENT_TIMESTAMP como valor predeterminado.

Estoy usando MySQL ver 5.5.56

Darshn
fuente
0

Tengo mysql versión 5.6.27 en mi LEMP y CURRENT_TIMESTAMP como valor predeterminado funciona bien.

Abraham Tugalov
fuente
0

mysql versión 5.5 establece el valor predeterminado de fecha y hora como CURRENT_TIMESTAMP será un error de informe que puede actualizar a la versión 5.6, establece el valor predeterminado de fecha y hora como CURRENT_TIMESTAMP

张春吉
fuente
0

¡Cambie el tipo de fecha y hora a marca de tiempo y funcionará! Tuve el mismo problema para mysql 5.5.56-MariaDB - MariaDB Server Espero que pueda ayudar ... lo siento si está depricado

Hamid ER-REMLI
fuente