Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
17
Help us understand the problem. What is going on with this article?
@seltzer

MySQLで “xxx doesn’t have a default value”とエラーが表示されたときの対処法

More than 1 year has passed since last update.

MySQLで値を挿入する際、次のようなエラーが発生することがあります。

SQLSTATE[HY000]: General error: 1364 Field ‘xxxx’ doesn’t have a default value

これは、挿入しようとしているテーブルのあるフィールドについて、値が指定されていない場合に発生します。MySQL 5.6以前のバージョンであれば問題なかったのですが、5.6から設定が一部変更されました。対処法を紹介しましょう。

SQLで値を指定する

このエラーメッセージは、値を指定すべきカラムに指定されていないことが問題であるため、SQL内で空の値などを指定することで回避することができます。

INSERT INTO xxx SET name=’abc’;
↓
INSERT INTO xxx SET name=’abc’, cnt=0;

※ cntカラムでエラーが発生している場合

STRICT_TRANS_TABLESを外す

対処としては、「STRICT_TRANS_TABLES」という設定を変えることになります。MySQLの設定ファイル(my.cnf)を書き換えましょう。

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
↓
sql_mode=NO_ENGINE_SUBSTITUTION

こうして、データベースを再起動すれば設定が有効になります。

XAMPPでの my.cnfの変更方法

XAMPPを利用している場合、my.cnfファイルはコントロールパネルから編集することができます。図のボタンをクリックし、「my.cnf」をクリックしましょう。

ただし、XAMPP 7.2に同梱されているデータベースは MariaDB(MySQLと互換性のある別製品)であるため、この問題の対象ではありません。

MAMPでの my.cnfの変更方法

MAMPを利用している場合は、以下に設定ファイルが存在しています。

アプリケーション→MAMP→conf→my.cnf

ただし、最初はファイル自体が存在しないため、その場合は新しくファイルを作成し、以下の一文を追加しましょう。

[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION

これにより、標準の設定が上書きされます。サーバーを再起動しましょう。

17
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
seltzer
株式会社エイチツーオー・スペース 代表取締役 「ちゃんとWeb」をコーポレートテーマに、Web標準に準拠したメンテナンスしやすいWebサイトを「ちゃんと」作ることを目指したWeb制作会社。 WordPressを利用したサイト制作や、スマートデバイス向けサイトの制作、PHPやJavaScriptによる開発を得意とする。 また、CSS Niteや Word Campでの講演や著書などを通じ、クリエイタ

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
17
Help us understand the problem. What is going on with this article?