Valeur par défaut invalide pour ‘dateAdded’

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