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?
AUTO_INCREMENT
DATETIME
?Réponses:
CURRENT_TIMESTAMP
n'est acceptable que sur lesTIMESTAMP
champs.DATETIME
les 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.
la source
CURRENT_TIMESTAMP
est spécifique à la version et est désormais autorisé pour lesDATETIME
colonnes à partir de la version 5.6.Consultez la documentation MySQL .
la source
Notez également que lorsque vous spécifiez
DATETIME
commeDATETIME(3)
ou comme sur MySQL 5.7.x, vous devez également ajouter la même valeur pourCURRENT_TIMESTAMP(3)
. Sinon, il continuera à lancer « Valeur par défaut non valide ».la source
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
la source
J'ai la version 5.6.27 de mysql sur mon LEMP et CURRENT_TIMESTAMP comme valeur par défaut fonctionne très bien.
la source
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
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é
la source