Valeur par défaut non valide pour "dateAdded"


90

J'ai un problème stupide avec SQL que je ne peux pas résoudre.

ALTER TABLE `actualités` 
 AJOUTER `dateAdded` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP AUTO_INCREMENT,
 AJOUTER UNE CLÉ PRIMAIRE (`dateAdded`)

Erreur:

(#1067)Invalid default value for 'dateAdded'

Quelqu'un peut-il m'aider?


8
C'est peut-être une question stupide, mais pourquoi le faites-vous AUTO_INCREMENT DATETIME?
jave.web

Réponses:


137

CURRENT_TIMESTAMPn'est acceptable que sur les TIMESTAMPchamps. DATETIMEles champs doivent être laissés avec une valeur par défaut nulle ou aucune valeur par défaut - les valeurs par défaut doivent être une valeur constante et non le résultat d'une expression.

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

Vous pouvez contourner ce problème en définissant un déclencheur post-insertion sur la table pour remplir une valeur «maintenant» sur tous les nouveaux enregistrements.


70
Cela ressemble à mysql 5.6.5, vous pouvez utiliser CURRENT_TIMESTAMP avec les champs DATETIME. Voir dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html
Frank Schwieterman

2
Merci Frank, j'ai trouvé ce problème en essayant d'importer une base de données exportée du dernier xampp vers un précédent.
The HCD

Le HCD, Frank ... a trouvé le même problème lors de l'exportation de MariaDb 10.x vers MariaDB 5.5 ... merci
Aukhan

1
Cette erreur se produit également dans mariadb 5.5. Passez à mariadb 10 et c'est résolu. Merci Frank
Samuel Tesler

50

CURRENT_TIMESTAMPest spécifique à la version et est désormais autorisé pour les DATETIMEcolonnes à partir de la version 5.6.

Consultez la documentation MySQL .


9
êtes-vous sûr ? J'obtiens l'erreur ci-dessus dans la version 5.7.x
Ramesh Pareek

16

Notez également que lorsque vous spécifiez DATETIMEcomme DATETIME(3)ou comme sur MySQL 5.7.x, vous devez également ajouter la même valeur pour CURRENT_TIMESTAMP(3). Sinon, il continuera à lancer « Valeur par défaut non valide ».


Cela a résolu le problème pour moi sur 5.7.x. Mes champs datetime ont été définis comme datetime (6) et l'utilisation de CURRENT_TIMESTAMP (6) a résolu le problème
Brad

Cela mérite d'être noté.
Mateus Felipe

1

J'ai eu le même problème, le correctif suivant a résolu mon problème.

  • Sélectionnez Type comme 'TIMESTAMP'

  • N'ENTREZ RIEN DANS LE CHAMP DE LONGUEUR / VALEURS. Gardez-le vide

  • Sélectionnez CURRENT_TIMESTAMP comme valeur par défaut.

J'utilise MySQL ver 5.5.56


0

J'ai la version 5.6.27 de mysql sur mon LEMP et CURRENT_TIMESTAMP comme valeur par défaut fonctionne très bien.


0

mysql version 5.5 définit la valeur par défaut de datetime comme CURRENT_TIMESTAMP sera une erreur de rapport que vous pouvez mettre à jour vers la version 5.6, elle définit la valeur par défaut de datetime comme CURRENT_TIMESTAMP


0

Changez le type de datetime en timestamp et cela fonctionnera! J'ai eu le même problème pour mysql 5.5.56-MariaDB - MariaDB Server J'espère que cela peut aider ... désolé si déprécié

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.