1
2

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.

【MySQL】「SET sql_mode = ' '」は何をしているのか

Posted at

結論

SQLモードを明示的にクリアすることで、デフォルトのSQLモード設定を利用することを指定しています。

SQLモードとは

サーバー SQL モードは、MySQL でサポートされる SQL 構文、および実行されるデータ妥当性チェックの種類を定義します。これにより、MySQL をさまざまな環境で使用したり、MySQL をほかのデータベースサーバーと一緒に使用したりすることが、さらに容易になります。MySQL サーバーは、これらのモードを各クライアントに個別に適用します。

参考:5.1.7 サーバー SQL モード

現在のSQLモードの確認

SQLモードには複数の項目があり、個別にON/OFFを指定できます。
MySQL5.7のデフォルトのSQLモード設定では、以下に示す7つの項目がONになっています。

SELECT @@global.sql_mode;

-- 出力(以下はデフォルトの設定)
+-------------------------------------------------------------------------------------------------------------------------------------------+
| @@global.sql_mode                                                                                                                         |
+-------------------------------------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-------------------------------------------------------------------------------------------------------------------------------------------+

それぞれのモードについては5.1.7 サーバー SQL モードを参照のこと。

SQLモードの設定

1.SETコマンドで設定する

-- デフォルトの設定にする場合
SET GLOBAL sql_mode = '';

-- 特定の項目をオンにする場合
SET GLOBAL sql_mode = '<モード名>';

2.my.cnfなどの設定ファイルにmodeを追記してMySQLを再起動する

sql-mode='<モード名>'
1
2
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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?