15
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SQLSTATE[HY000]: General error: 1364 Field **** doesn't have a default value

Posted at

MySQLのフィールドにDefaultが設定されていない場合のエラー

サーバー移行が終わって、さてちょっと検証するか、と思ったら以下のエラーが。。

SQLSTATE[HY000]: General error: 1364 Field **** doesn't have a default value

****にはフィールド名が入っています。

どうやら、データベースに登録しようとしたけれど、****のフィールドに何も入れてないからエラーになったよ、ということらしいです。

しかしおかしなことに、移行前のサーバーでは起きなかったんですよね。。

と思って調べたら、

MySQLのバージョンによって動作が変わったみたいです。

旧サーバーは以下

# mysql --version
mysql  Ver 15.1 Distrib 5.5.60-MariaDB, for Linux (x86_64) using readline 5.1

まあ正確にはMariaDBですが。。

新サーバーは以下

# mysql --version
mysql Ver 14.14 Distrib 5.7.28, for Linux (x86_64) using EditLine wrapper

MySQL5.5→5.7に変更したことによって起きたエラーなのです。

解決方法

my.cnfに設定を追加

# vi /etc/my.cnf

my.cnfの一番下に以下の設定を追加します。

sql_mode=NO_ENGINE_SUBSTITUTION

MySQL再起動

sudo service mysqld restart

以上で、無事にMySQL5.5と同じく、default未設定のフィールドにデータを入れなくても、エラーにならないようになりました。

15
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?