ホームページ >データベース >mysql チュートリアル >MySQL がエラー 1364:「フィールドにデフォルト値がありません」をスローするのはなぜですか?

MySQL がエラー 1364:「フィールドにデフォルト値がありません」をスローするのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-24 02:59:14694ブラウズ

Why Does MySQL Throw Error 1364:

MySQL エラー 1364: フィールドにデフォルト値がありません

欠落している null 非許容カラムの値を明示的に指定せずにテーブルにデータを挿入しようとしたときデフォルト値を指定すると、MySQL は「フィールドにデフォルト値がありません」というエラーをスローする場合があります (エラー番号1364).

問題の説明

次のスキーマを持つテーブルに挿入するときに、このエラーが発生しました:

CREATE TABLE try (
  name VARCHAR(8),
  CREATED_BY VARCHAR(40) NOT NULL
);

CREATED_BY フィールドにユーザー名:

CREATE TRIGGER autoPopulateAtInsert
BEFORE INSERT ON try
FOR EACH ROW
SET NEW.CREATED_BY = USER();

を使用して行を挿入しようとすると、次のクエリ:

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

それでもエラー メッセージが表示されます。

解決策

エラー メッセージは、MySQL 構成で STRICT_TRANS_TABLES SQL モードが設定されていることが原因です。ファイル (my.ini など)。このモードでは、Null 非許容列のデフォルト値に関する厳格なルールが適用されます。この問題を解決するには、ユーザーは次の手順を実行する必要があります。

  1. MySQL 構成ファイルを開きます。
  2. STRICT_TRANS_TABLES 設定を見つけて、削除または無効にします。
  3. MySQL サービスを再起動します。 .

または、ユーザーはデフォルト値を作成できます。 ALTER TABLE ステートメントを使用して CREATED_BY フィールドに対して。ただし、トリガーが値を動的に設定することを目的としている場合、このアプローチは適切ではない可能性があります。

以上がMySQL がエラー 1364:「フィールドにデフォルト値がありません」をスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。