MySQLのsql_modeモード

2418 ワード

もとのアドレス
        https://www.cnblogs.com/Zender/p/8270833.html

目次を読む
一、sql_mode値の意味2、ANSIモード3、STRICT_TRANS_TABLESモード4、TRADITIONALモードmysqlデータベースの環境変数sql_modeは、mysqlがサポートすべきsql構文、データ検証などを定義しています!現在のデータベースで使用されているsql_を以下の方法で表示できます.mode:
ディレクトリ1に戻り、sql_mode値の意味ONLY_FULL_GROUP_BY
GROUP BY集約操作の場合、SELECTの列がGROUP BYに表示されない場合、このSQLは、GROUP BY従文に列が存在しないため、合法的ではないとみなされます.
STRICT_TRANS_TABLES
このモードでは、値をトランザクション・テーブルに挿入できない場合は、現在の操作が中断され、非トランザクション・テーブルに制限はありません.
NO_ZERO_IN_DATE
厳格なモードでは、月または日の部分が0の日付は受け入れられません.IGNOREオプションを使用する場合は、類似の日付に'0000-00-00'を挿入します.非厳格モードでは、日付は受け入れられますが、警告が生成されます.
NO_ZERO_DATE
厳格なモードでは、「0000-00-00」を合法的な日付にしないでください.IGNOREオプションでゼロ日付を挿入することもできます.非厳格モードでは、日付は受け入れられますが、警告が生成されます.
ERROR_FOR_DIVISION_BY_ZERO
厳格モードでは、INSERTまたはUPDATE中に、ゼロ除算(またはMOD(X,0))された場合、エラー(それ以外の場合は警告)が発生します.このモードが指定されていない場合、0で除算された場合、MySQLはNULLを返します.INSERT IGNOREまたはUPDATE IGNOREで使用される場合、MySQLはゼロ除算警告を生成しますが、操作結果はNULLです.
NO_AUTO_CREATE_USER
パスワードが指定されていない限り、GRANTが新しいユーザーを自動的に作成しないようにします.
NO_ENGINE_SUBSTITUTION
必要なストレージエンジンが無効またはコンパイルされていない場合は、エラーが放出されます.この値を設定しない場合は、デフォルトのストレージエンジンで置き換え、例外を放出します.
mysql5.0以上のバージョンでは、3つのsql_がサポートされています.modeモード:
ANSIモード
緩和モードでは、挿入データを検証し、定義タイプや長さに合致しない場合は、データ型を調整または切断して保存し、warning警告を報告します.
TRADITIONALモード
厳格モード、mysqlデータベースにデータを挿入する時、データの厳格な検査を行って、エラーデータが挿入できないことを保証して、errorエラーを報告します.物事に用いられると、物事のロールバックが行われます.
STRICT_TRANS_TABLESモード
厳格モードで、データの厳格な検査を行い、エラーデータを挿入できず、errorエラーを報告する.
ディレクトリ2に戻ると、ANSIモードANSIモードでデータを挿入した場合、カラム長の要件を満たしていない場合、データも挿入に成功しますが、カラム長を超えたフィールドは遮断され、warning警告が報告されます.例:
SET @@sql_mode=ANSI;
CREATE TABLE testtable(
  NAME VARCHAR(2),
  PASSWORD VARCHAR(2)
);
INSERT INTO testtable VALUES('11111111','222222222222');
実行結果:
カタログ3に戻りSTRICT_TRANS_TABLESモードSTRICT_TRANS_TABLESモードでは、データを挿入すると、mysqlは厳格にデータの検証を行い、挿入列の値が要求を満たしていないことを発見した場合、errorエラーを直接報告し、エラーデータがデータベースに挿入できないことを保証します.例:
SET @@sql_mode=STRICT_TRANS_TABLES;
INSERT INTO testtable VALUES('11111111','222222222222');
実行結果:
ディレクトリ4に戻り、TRADITIONALモードTRADITIONALモードとSTRICT_TRANS_TABLESモードの実行結果は,この場合に一致した.
コメント:
エラーが検出されるとすぐにINSERT/UPDATEを破棄します.非トランザクション・ストレージ・エンジンを使用する場合、エラーが発生する前に行われたデータ変更は「スクロール」されず、「一部のみ行われた」と更新されます.
注意:
ここで設定したsql_modeはすべてsessionレベルです.また、myを直接修正することができます.iniファイル