「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)