[MySQL] mysql 5.7sql_modeパラメーター分析

mysql> select version(); 
+ ------------ + 
| version()| 
+ ------------ + 
| 5.7.32-ログ| 
+ ------------ +
セット内の1行(0.00秒)

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_AUTO_CREATE_USER、NO_ENGINE_SUBSTITUTION | 
+ ---------------------------------- -------------------------------------------------- -------------------------------------------------- ----- +
セット内の1行(0.00秒)

ONLY_FULL_GROUP_BY 
GROUP BYを使用してクエリを実行するSQLの場合、GROUP BYに表示されないフィールドはSELECT部分​​で許可されません。
つまりSELECTクエリのフィールドGROUPBYに表示されるフィールドである必要があります。集計関数を使用するか、一意の属性を使用します。

STRICT_TRANS_TABLES
このオプションは、トランザクションストレージエンジンには有効ですが、非トランザクションストレージエンジンには無効です。このオプションは、厳密なsqlモードが有効になっていることを示します。
非対応のフィールド値が挿入または更新された場合、厳密なSQLモードでは、INSERTまたはUPDATE文で、エラーが運転中断に直接報告されます

NO_ZERO_IN_DATE
時間フィールドの値は、MySQLに挿入し、日付と月がゼロになることは許されません。

NO_ZERO_DATE
のMySQL 

ERROR_FOR_DIVISION_BY_ZEROに挿入された時間フィールドの値をゼロにすることできません
INSERTまたはUPDATEステートメントで、データが0で除算されると、警告(非厳密なsqlモードの場合)またはエラー(厳密なsqlモードの場合)が発生します。
このオプションをオフにすると、数値が0で除算され、警告なしにNULLが取得されます。
このオプションを有効にして非厳密SQLモードで、数値を0で除算すると、NULLが取得されますが、警告が生成されます。
このオプションが有効で、厳密なsqlモードでは、数値が0で除算され、エラーが生成され、操作が中断され
ます。以前のバージョンの

NO_AUTO_CREATE_USERではGRANT構文が使用されています。ユーザーが存在しない場合、ユーザーは自動的に作成されます。このオプションは、この機能を制限します

。NO_ENGINE_SUBSTITUTIONCREATETABLEまたはALTER TABLE構文がストレージエンジンを実行するときに、設定されたストレージエンジンが無効になっているか、コンパイルされていない場合、エラーが発生します。


おすすめ

転載: blog.51cto.com/13598811/2590881
おすすめ