「MySQL 8.0.30」SQLモードの確認と変更方法

環境
Windows 11 Pro 21H2 64bit
MySQL 8.0.30

書式
SELECT @@global.sql_mode;

各モードの詳細について

1.ONLY_FULL_GROUP_BY

GROUP BY 句で名前が指定されていない非集約カラムを、選択リスト、HAVING 条件、
または (MySQL 5.6.5 以降で) ORDER リストが参照するクエリーを拒否します。

2.STRICT_TRANS_TABLES

トランザクションストレージエンジンの厳密モードを有効にし、
可能な場合は非トランザクションストレージエンジンでも有効にします。

3.NO_ZERO_IN_DATE

NO_ZERO_IN_DATE モードは、年の部分は非ゼロであるが月または日の部分が 0 である
日付をサーバーが許可するかどうかに影響します。

4.NO_ZERO_DATE
サーバーが ‘0000-00-00’ を有効な日付として許可するかどうかに影響します。

5.ERROR_FOR_DIVISION_BY_ZERO
MOD(N,0) を含むゼロ除算の処理に影響します。

6.NO_AUTO_CREATE_USER

認証情報が指定される場合を除き、ほかの方法で実行される場合は、
GRANT ステートメントで新規ユーザーを自動的に作成しません。

操作例
1.SQLモードを確認します。

mysql> 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_ENGINE_SUBSTITUTION |
+-----------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

2.SQLモードを変更します。

mysql> SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION';
Query OK, 0 rows affected (0.04 sec)

 

MySQL

Posted by arkgame