1. ホーム
  2. mysql

[解決済み] mysql error 1364 Field doesn't have a default values.

2022-06-26 08:01:41

質問

私のテーブルは次のようなものです。

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

を実行すると、テーブルにエントリが作成されますが、まだエラーメッセージが表示されます。

Field 'CREATED_BY' doesn't have a default value Error no 1364

フィールドをnullableにせず、トリガーを削除せずにこのエラーを抑制する方法はありますか?さもなければ、私のハイバーネートはこれらの例外を見ることになり(挿入が行われたにもかかわらず)、アプリケーションはクラッシュします。

どのように解決するのですか?

のデフォルト値を設定する。 Created_By (例: 空 VARCHAR のように)、トリガーはとにかく値を更新します。

create table try ( 
     name varchar(8), 
     CREATED_BY varchar(40) DEFAULT '' not null
);