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?

Robin Van den Broeck
la source
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.

Marc B
la source
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 .

David Soussan
la source
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 ».

Torsten Ojaperv
la source
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

Darshn
la source
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.

Abraham Tugalov
la source
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

张春吉
la source
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é

Hamid ER-REMLI
la source