J’ai un problème stupide avec SQL que je ne peux pas résoudre.
ALTER TABLE `news` ADD `dateAdded` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP AUTO_INCREMENT, AJOUTEZ LA CLÉ PRIMAIRE (`dateAdded`)
Erreur:
(#1067)Invalid default value for 'dateAdded'
Quelqu’un peut-il m’aider?
CURRENT_TIMESTAMP
n’est acceptable que dans les champs TIMESTAMP
. DATETIME
champs DATETIME
doivent DATETIME
soit une valeur par défaut nulle, soit 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 renseigner une valeur “now” sur tous les nouveaux enregistrements.
CURRENT_TIMESTAMP
est spécifique à la version et est désormais autorisé pour les colonnes DATETIME
partir de la version 5.6.
Voir les documents MySQL .
Notez également que lorsque vous spécifiez DATETIME
comme DATETIME(3)
ou comme MySQL 5.7.x, vous devez également append la même valeur pour CURRENT_TIMESTAMP(3)
. Si ce n’est pas le cas, il continuera à lancer « Valeur par défaut invalide ».
J’ai mysql version 5.6.27 sur mon LEMP et CURRENT_TIMESTAMP car la valeur par défaut fonctionne correctement.
mysql version 5.5 a défini la valeur par défaut de datetime car CURRENT_TIMESTAMP sera une erreur de rapport que vous pouvez mettre à jour à la version 5.6, il définit la valeur par défaut de datetime comme CURRENT_TIMESTAMP
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 vous aider … désolé si déprécié
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 longueur / valeur. GARDEZ-LE BLANC
Sélectionnez CURRENT_TIMESTAMP comme valeur par défaut.
J’utilise MySQL ver 5.5.56