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

環境
Windows 11 Pro 21H2 64bit
MySQL 8.0.30

書式
SELECT @@global.sql_mode;

各モードの詳細について

1.ONLY_FULL_GROUP_BY

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
GROUP BY 句で名前が指定されていない非集約カラムを、選択リスト、HAVING 条件、
または (MySQL 5.6.5 以降で) ORDER リストが参照するクエリーを拒否します。
GROUP BY 句で名前が指定されていない非集約カラムを、選択リスト、HAVING 条件、 または (MySQL 5.6.5 以降で) ORDER リストが参照するクエリーを拒否します。
GROUP BY 句で名前が指定されていない非集約カラムを、選択リスト、HAVING 条件、
または (MySQL 5.6.5 以降で) ORDER リストが参照するクエリーを拒否します。

2.STRICT_TRANS_TABLES

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
トランザクションストレージエンジンの厳密モードを有効にし、
可能な場合は非トランザクションストレージエンジンでも有効にします。
トランザクションストレージエンジンの厳密モードを有効にし、 可能な場合は非トランザクションストレージエンジンでも有効にします。
トランザクションストレージエンジンの厳密モードを有効にし、
可能な場合は非トランザクションストレージエンジンでも有効にします。

3.NO_ZERO_IN_DATE

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
NO_ZERO_IN_DATE モードは、年の部分は非ゼロであるが月または日の部分が 0 である
日付をサーバーが許可するかどうかに影響します。
NO_ZERO_IN_DATE モードは、年の部分は非ゼロであるが月または日の部分が 0 である 日付をサーバーが許可するかどうかに影響します。
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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
認証情報が指定される場合を除き、ほかの方法で実行される場合は、
GRANT ステートメントで新規ユーザーを自動的に作成しません。
認証情報が指定される場合を除き、ほかの方法で実行される場合は、 GRANT ステートメントで新規ユーザーを自動的に作成しません。
認証情報が指定される場合を除き、ほかの方法で実行される場合は、
GRANT ステートメントで新規ユーザーを自動的に作成しません。

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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)
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)
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モードを変更します。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
mysql> SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION';
Query OK, 0 rows affected (0.04 sec)
mysql> SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION'; Query OK, 0 rows affected (0.04 sec)
mysql> SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION';
Query OK, 0 rows affected (0.04 sec)

 

MySQL

Posted by arkgame