ホームページ  >  記事  >  データベース  >  mysql の sql_mode 設定を修正するコツを教えます

mysql の sql_mode 設定を修正するコツを教えます

醉折花枝作酒筹
醉折花枝作酒筹転載
2021-08-05 09:22:513420ブラウズ

sql_mode は見落とされやすい変数です。デフォルト値は null です。この設定では、不正なデータの挿入を許可するなど、一部の不正な操作が許可される可能性があります。この値は実稼働環境では厳密モードに設定する必要があるため、開発およびテスト段階で問題を発見できるように、開発およびテスト環境のデータベースも設定する必要があります。

1、SQL を実行して

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 の再起動後は設定ファイル内の対応する値を再読み込みするため無効になります。永続的にする必要がある場合は、設定ファイル内の値を変更する必要があります。

vi /etc/my.cnf
errree

保存して終了し、サーバーを再起動すると、永続的に有効になります

sql_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-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_QUOTES

ANSI_QUOTES を有効にした後は、二重引用符を使用できません。識別子として解釈されるため、文字列を引用符で囲むマーク

関連する推奨事項: "mysql チュートリアル "

以上がmysql の sql_mode 設定を修正するコツを教えますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。