MySQL で sql_mode をクエリおよび設定するにはどうすればよいですか?次の記事では、MySQL の sql_mode のクエリと設定方法を紹介します。
#MySQL の sql_mode クエリと設定
1、SQL を実行して表示します [関連する推奨事項: mysql ビデオ チュートリアル ]
select @@session.sql_mode;
select @@global.sql_mode;
2 を表示、
set @@session.sql_mode='xx_mode'set session sql_mode='xx_mode'
set global sql_mode='xx_mode';set @@global.sql_mode='xx_mode';
session は省略できます。デフォルトのセッションは現在のセッションでのみ有効です保存して終了し、サーバーを再起動すると、永続的に有効になりますグローバルな変更には高度な権限が必要です。変更は次の接続でのみ有効で、現在のセッションと MySQL MySQL は再起動時に設定ファイル内の対応する値を再読み込みするため、再起動後は無効になります。永続化する必要がある場合は、設定ファイル内の値を変更する必要があります。
vi /etc/my.cnfログイン後にコピー[mysqld]sql-mode = "xx_mode"ログイン後にコピー
ONLY_FULL_GROUP_BY
GROUP BY 集計操作の場合、SELECT の列が GROUP BY に現れない場合、その列が GROUP BY 句にないため、この SQL は無効になりますNO_AUTO_VALUE_ON_ZERO#この値は、自動拡張列の挿入に影響します。デフォルト設定では、0 または NULL を挿入すると、次の自動増加値が生成されます。このオプションは、ユーザーが値 0 を挿入する必要があり、列が自動増加する場合に便利です。
STRICT_TRANS_TABLESこのモードでは、トランザクション テーブルに値を挿入できない場合、現在の操作は中断され、非トランザクションに対する制限はありません。 tables
NO_ZERO_IN_DATE厳密モードでは、日付または月をゼロにすることはできません。日付の月または日が 0 の値を含む限り、エラーが報告されますが、「
0000- Except for 00-00」
NO_ZERO_DATEこの値を設定すると、mysql データベースでは許可されません。ゼロの日付を挿入すると、警告ではなくエラーがスローされます。年、月、日のいずれかが 0 でない場合、要件を満たしています。「
0000-00-00」のみエラー
ERROR_FOR_pISION_BY_ZERO# を報告します。 ## INSERT または UPDATE プロセス中に、データがゼロで除算されると、警告ではなくエラーが生成されます。モードが指定されていない場合、データがゼロで除算されると MySQL は NULL を返します update table set num = 5 / 0; モードの設定後にエラーが報告されます。設定されていない場合、変更は成功し、 num の値は null になります
NO_AUTO_CREATE_USER
#GRANT による空のパスワードを持つユーザーの作成を禁止します
NO_ENGINE_SUBSTITUTION必要なストレージ エンジンが無効になっているか、コンパイルされていない場合は、エラーがスローされます。この値が設定されていない場合、代わりにデフォルトのストレージ エンジンが使用され、例外がスローされます。
PIPES_AS_CONCAT「||」を文字列接続演算子として扱う代わりにOR 演算子。これは Oracle データベースと同じであり、文字列スプライシング関数 Concat に似ています。
ANSI_QUOTESANSI_QUOTES を有効にした後は、二重引用符を使用できません。文字列は識別子として解釈されるため、文字列を引用符で囲みます。プログラミング関連の知識の詳細については、
プログラミング ビデオをご覧ください。 !
以上がMySQL で sql_mode をクエリおよび設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。