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
Patricia Arquetteoriginal
2024-12-24 02:59:14688parcourir

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
);

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();

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

INSERT INTO try (name) VALUES ('abc');

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!

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