#author("2022-04-18T05:48:14+00:00","default:admin","admin")
*SQLモード [#wd52f05d]
-[[MySQLのSQLモードをstrictモードで設定する。:https://qiita.com/park-jh/items/32b21d7b8d24b0ab3dba]]

-MySQLでは指定された値のままレコードに格納できなくても、なるべくエラーにならないように処理を続けるようになっている
-sql_modeをstrictモードで設定すれば、このようなMySQL特有の振る舞いを変更して他のSQLデータベースのように使える

**現在のモードを確認 [#g066eac5]
 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 row in set (0.00 sec)

**モード [#d168c6b9]
***ONLY_FULL_GROUP_BY [#b283263d]
-GROUP BY句で名前が指定されていない非集約カラムを、選択リスト、HAVING条件、またはORDERリストが参照するクエリを拒否

***STRICT_TRANS_TABLES [#pe9276d4]
-値を指定した通りにトランザクションテーブルに挿入できない場合、ステートメントを中止
-非トランザクションテーブルの場合、値が単一行ステートメントで発生するか、複数行ステートメントの先頭行で発生した場合、ステートメントを中止

***NO_ZERO_IN_DATE [#r0c5f74b]
-年の部分はゼロではないが、月または日の部分が0である日付がこのモードの制御対象になる
-'0000-00-00'は制御対象ではない。'0000-00-00'についてはNO_ZERO_DATEモードを使う。
-このモードおよび厳密モード1が有効な場合、IGNOREが指定されている場合を除き、ゼロ部分を含む日付は許可されず、エラーになる。
-INSERT IGNOREおよびUPDATE IGNOREの場合、ゼロ部分を含む日付は'0000-00-00'として挿入され、警告になる。

***NO_ZERO_DATE [#p07caf7e]
-このモードと厳密モードが有効な場合、IGNOREが指定されている場合を除き、'0000-00-00'は許可されず、エラーになる。
-INSERT IGNOREおよびUPDATE IGNOREの場合は、'0000-00-00'が許可され、警告になる

***ERROR_FOR_DIVISION_BY_ZERO [#o87d0c59]
-このモードおよび厳密モードが有効な場合、ゼロによる除算はエラーになる
-INSERT IGNOREおよびUPDATE IGNOREの場合は、ゼロによる除算はNULLを挿入し、警告になる

***NO_AUTO_CREATE_USER [#abb67e58]
-認証情報が指定される場合を除き、他の方法で実行される場合は、GRANTステートメントで新規ユーザーを自動的に作成しない

***NO_ENGINE_SUBSTITUTION [#re96de42]
-CREATE TABLEまたはALTER TABLEなどのステートメントが無効またはコンパイルされていないストレージエンジンを指定した時、デフォルトのストレージエンジンの自動置換を制御する。
-このモードが有効な場合、目的のエンジンが利用できない場合はエラーになり、テーブルは作成または変更されない。

***TRADITIONAL [#zc602137]
-以下モードを指定したのと同等
--STRICT_TRANS_TABLES
--STRICT_ALL_TABLES
--NO_ZERO_IN_DATE
--NO_ZERO_DATE
--ERROR_FOR_DIVISION_BY_ZERO
--NO_AUTO_CREATE_USER
--NO_ENGINE_SUBSTITUTION

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS