ホームページ >データベース >mysql チュートリアル >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 非許容列のデフォルト値に関する厳格なルールが適用されます。この問題を解決するには、ユーザーは次の手順を実行する必要があります。
または、ユーザーはデフォルト値を作成できます。 ALTER TABLE ステートメントを使用して CREATED_BY フィールドに対して。ただし、トリガーが値を動的に設定することを目的としている場合、このアプローチは適切ではない可能性があります。
以上がMySQL がエラー 1364:「フィールドにデフォルト値がありません」をスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。