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?


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.


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


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 '.


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


0

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


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


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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.