Maison > base de données > tutoriel mysql > Pourquoi MySQL renvoie-t-il l'erreur 1364 : « Le champ n'a pas de valeur par défaut » ?

Pourquoi MySQL renvoie-t-il l'erreur 1364 : « Le champ n'a pas de valeur par défaut » ?

Patricia Arquette
Libérer: 2024-12-24 02:59:14
original
685 Les gens l'ont consulté

Why Does MySQL Throw Error 1364:

Erreur MySQL 1364 : le champ n'a pas de valeurs par défaut

Lorsque vous tentez d'insérer des données dans une table sans spécifier explicitement une valeur pour une colonne non nullable qui manque une valeur par défaut, MySQL peut générer une erreur indiquant "Le champ n'a pas de valeur par défaut" (Erreur No. 1364).

Description du problème

Un utilisateur a rencontré cette erreur lors de l'insertion dans une table avec le schéma suivant :

CREATE TABLE try (
  name VARCHAR(8),
  CREATED_BY VARCHAR(40) NOT NULL
);
Copier après la connexion

Un déclencheur a été créé pour remplir automatiquement le Champ CREATED_BY avec le nom d'utilisateur :

CREATE TRIGGER autoPopulateAtInsert
BEFORE INSERT ON try
FOR EACH ROW
SET NEW.CREATED_BY = USER();
Copier après la connexion

Cependant, tenter d'insérer une ligne en utilisant ce qui suit requête :

INSERT INTO try (name) VALUES ('abc');
Copier après la connexion

aboutit toujours au message d'erreur.

Solution

Le message d'erreur est le résultat de la définition du mode SQL STRICT_TRANS_TABLES dans le fichier de configuration MySQL ( my.ini ou similaire). Ce mode applique des règles strictes concernant les valeurs par défaut pour les colonnes non nullables. Pour résoudre le problème, l'utilisateur doit :

  1. Ouvrez le fichier de configuration MySQL.
  2. Localisez le paramètre STRICT_TRANS_TABLES et supprimez-le ou désactivez-le.
  3. Redémarrez le service MySQL .

Alternativement, l'utilisateur peut créer une valeur par défaut pour le champ CREATED_BY à l'aide du Instruction ALTER TABLE. Cependant, cette approche peut ne pas convenir si le déclencheur est destiné à définir dynamiquement la valeur.

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