Maison >base de données >tutoriel mysql >Pourquoi l'ajout d'une colonne entraîne-t-il une erreur « Valeur par défaut non valide pour « created_at » » dans MySQL ?

Pourquoi l'ajout d'une colonne entraîne-t-il une erreur « Valeur par défaut non valide pour « created_at » » dans MySQL ?

DDD
DDDoriginal
2024-12-02 11:48:10897parcourir

Why Does Adding a Column Result in an

Valeur par défaut non valide pour Created_At

Problème :

Lors de la tentative de modification d'une table en en ajoutant une nouvelle colonne, vous rencontrez une erreur :

ERROR 1067 (42000): Invalid default value for 'created_at'

bien que vous n'en ayez modifié aucune colonnes d'horodatage.

Solution :

L'erreur provient de sql_modes. Pour le résoudre :

  1. Vérifiez les modes SQL :
show variables like 'sql_mode' ;
  1. Désactivez les modes problématiques :

Supprimez les modes suivants de sql_mode :

NO_ZERO_IN_DATE
NO_ZERO_DATE

Ces modes sont présents par défaut dans les versions plus récentes de MySQL.

Paramètre global :

Pour un changement à l'échelle du système, exécutez ce qui suit en tant que root :

set global sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

Supplémentaire Notes :

  • La nouvelle colonne peut maintenant être ajoutée sans déclencher l'erreur.
  • Si vous souhaitez utiliser la valeur par défaut NOT NULL pour Create_at, vous pouvez la spécifier explicitement :
ALTER TABLE investments ADD bank TEXT DEFAULT NOT NULL;

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn