Maison > base de données > tutoriel mysql > Pourquoi est-ce que j'obtiens « ERREUR 1067 (42000) : valeur par défaut non valide pour 'created_at' » lors de l'ajout d'une colonne dans MySQL ?

Pourquoi est-ce que j'obtiens « ERREUR 1067 (42000) : valeur par défaut non valide pour 'created_at' » lors de l'ajout d'une colonne dans MySQL ?

Barbara Streisand
Libérer: 2024-12-11 03:50:10
original
714 Les gens l'ont consulté

Why Am I Getting

"ERREUR 1067 (42000) : valeur par défaut non valide pour 'created_at'" expliquée

Lorsque vous tentez de modifier une table en ajoutant un nouveau colonne, vous pouvez rencontrer une erreur indiquant : « ERREUR 1067 (42000) : valeur par défaut non valide pour 'créé_à'." Cette erreur semble contre-intuitive puisque vous ne modifiez pas la colonne 'created_at' elle-même.

La cause profonde

Le problème provient des paramètres de configuration MySQL connus sous le nom de modes SQL. Plus précisément, les modes SQL "NO_ZERO_IN_DATE" et "NO_ZERO_DATE". Ces modes limitent les valeurs de date et d'horodatage par défaut pour inclure à la fois un composant de date et d'heure, interdisant les valeurs avec un composant d'heure de « 00:00:00 ».

Lorsque vous créez une nouvelle table, elle hérite des modes SQL. actif au moment de la création. Dans le cas où ces modes SQL sont activés, cela impacte les valeurs par défaut des colonnes d'horodatage comme 'created_at'. L'ajout d'une nouvelle colonne à une table avec ces modes SQL activés tente de remplacer la valeur par défaut existante pour 'created_at', ce qui n'est pas autorisé.

Résolution

Pour résoudre ce problème, vous pouvez identifier les modes SQL actifs en exécutant la commande :

show variables like 'sql_mode' ; 
Copier après la connexion

Si le "NO_ZERO_IN_DATE" et Les modes SQL "NO_ZERO_DATE" sont présents, vous pouvez les désactiver en définissant le mode SQL pour supprimer ces restrictions. Vous pouvez le faire globalement en tant qu'utilisateur root avec la commande :

set global sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
Copier après la connexion

Après avoir apporté les modifications nécessaires au mode SQL, vous devriez pouvoir ajouter la nouvelle colonne sans rencontrer l'erreur.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal