「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 リストが参照するクエリーを拒否します。
GROUP BY 句で名前が指定されていない非集約カラムを、選択リスト、HAVING 条件、
または (MySQL 5.6.5 以降で) ORDER リストが参照するクエリーを拒否します。
GROUP BY 句で名前が指定されていない非集約カラムを、選択リスト、HAVING 条件、 または (MySQL 5.6.5 以降で) ORDER リストが参照するクエリーを拒否します。
2.STRICT_TRANS_TABLES
トランザクションストレージエンジンの厳密モードを有効にし、
可能な場合は非トランザクションストレージエンジンでも有効にします。
トランザクションストレージエンジンの厳密モードを有効にし、
可能な場合は非トランザクションストレージエンジンでも有効にします。
トランザクションストレージエンジンの厳密モードを有効にし、 可能な場合は非トランザクションストレージエンジンでも有効にします。
3.NO_ZERO_IN_DATE
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
認証情報が指定される場合を除き、ほかの方法で実行される場合は、
GRANT ステートメントで新規ユーザーを自動的に作成しません。
認証情報が指定される場合を除き、ほかの方法で実行される場合は、
GRANT ステートメントで新規ユーザーを自動的に作成しません。
認証情報が指定される場合を除き、ほかの方法で実行される場合は、 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)
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モードを変更します。
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)