MySQL Strict Modeの知識ポイントの詳細な説明

MySQL Strict Modeの知識ポイントの詳細な説明

I. 厳密モードの説明

MySQL 5.0 以降の厳密モード (STRICT_TRANS_TABLES) の制限に従って、次のようになります。

1) NULLでないフィールドにNULL値を挿入することはサポートされていません

2) 自動増分フィールドに「」値を挿入することはできませんが、null値を挿入することはできます。

3). テキストフィールドのデフォルト値をサポートしていません

次のコードを見てください: (最初のフィールドは自動インクリメントフィールドです)

SQLコード

$query="デモ値に挿入('','$firstname','$lastname','$sex')";

上記のコードは非厳密モードでのみ有効です。

コード

$query="デモ値に挿入(NULL,'$firstname','$lastname','$sex')";

上記のコードは厳密モードでのみ有効です。空の値 '' を NULL に置き換えます。

II. データベースを厳密モードに対応させる

1. 厳密モードをサポートするために、データベース構造に次の改善を加えます。

1) すべての非ヌルフィールドに非ヌルのデフォルト値を設定します。文字列のデフォルト値は「''」、数値のデフォルト値は0、日付のデフォルト値は「0000-00-00 00:00:00」です。

2) テキストフィールドのデフォルト値を削除する

3) 標準化の改善: タイトルフィールドをvarchar(255)に変更し、デフォルト値のnullフィールドを非nullフィールドに変更します。

2. インストールされたPHPプログラムのデータベース構造がStrictモードをオフにする場合

1) 1 つは、MySQL 5.0 (またはそれ以降) をインストールするときに厳密モードを削除することです。

my.cnf を編集して Strict Mode をオフにします。

sql モード = "NO_AUTO_CREATE_USER、NO_ENGINE_SUBSTITUTION"

2) 別の方法は、クエリ ステートメントを変更することです。例えば、

($this->dbcharset) の場合 {
@mysql_query("名前を設定 ".$this->dbcharset);
}

後で実行

mysql_query("@@sql_mode = '' を設定します");

MySQL 5 を使用していることを確認してください。

mysqliメソッドも同様で、実行は

mysqli_query($this->connection_id, "@@sql_mode = '' に設定");

MySQL Strict Mode の知識ポイントの詳細な説明に関するこの記事はこれで終わりです。MySQL Strict Mode に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL の sql_mode モード例の詳細な説明
  • Django2 は MySQL に接続し、モデルテストの例を分析します。
  • MySQL sql_modeの適切な設定に関する詳細な説明
  • MySQL sql_mode の分析と設定の説明
  • MySQL での SQL モードの表示と設定の詳細な説明

<<:  jsはreduceメソッドを使用してコードをよりエレガントにします

>>:  jsプロジェクトでの双方向データバインディングの簡単な実装方法

推薦する

Web Storage APIの使用に関する簡単な説明

目次1. ブラウザのローカルストレージ技術1.1、セッションストレージ1.2、ローカルストレージ2....

Firefox で Flash を再生するためのオブジェクトとパラメータの書き方

コードをコピーコードは次のとおりです。 <object classid="clsid...

Mac で MySQL 8.0.22 のパスワードを取得する方法

Mac 最新バージョンの MySQL 8.0.22 パスワード回復問題の説明:昨日、突然、Macで最...

CentOS 7 で RPM パッケージを使用して MySQL 5.7.9 をインストールするチュートリアル

MySQL 5.7.9 のインストールチュートリアルを録画してみんなと共有しましょう環境の紹介:オペ...

MySQLのバックアップとリカバリの詳細な説明

序文:前回の記事では、さまざまな MySQL ステートメント構文の使用法とユーザー権限に関する知識を...

Reactでpropsを使用する方法と制限する方法

コンポーネントの props (props はオブジェクトです)機能: コンポーネントに渡されたデー...

JavaScript マクロタスクとマイクロタスク

マクロタスクとマイクロタスクJavaScript はシングルスレッド言語です (マルチスレッドの場合...

Vue は Tencent Map を統合して API を実装します (デモ付き)

目次執筆の背景プロジェクトの説明事前準備注記執筆の背景以前のプロジェクトではTencent Maps...

VMware ワークステーション 12 に Ubuntu 14.04 (64 ビット) をインストール

1. インストール環境コンピュータモデル: Lenovo Y471a (i5) ノートパソコンシステ...

Jenkins の紹介と Docker で Jenkins をデプロイする方法

1. 関連概念1.1 Jenkins の概念: Jenkins は、使用されるプラットフォームに関係...

Windows サービス 2016 Datacenter\Stand\Embedded アクティベーション方法 (2021)

管理者権限でcmdを実行する slmgr /ipk CB7KF-BWN84-R7R2Y-793K2-...

Linux の特別な権限 SUID、SGID、SBIT の詳細な説明

序文Linux のファイルまたはディレクトリの権限については、通常の rwx 権限についてすべて知っ...

https暗号化アクセス用にnginxを設定するための詳細なチュートリアル

環境: 1 CentOS Linux リリース 7.5.1804 (コア)ファイアウォールと sel...

入力スクリプトなしでタイプ拡張を使用する方法

序文JS の型付けが弱く、記述基準が緩く、開発ツールのサポートが弱いため、前任者のコードをメンテナン...

単一の MySQL テーブル内の行数が 500 万を超えてはいけないのはなぜですか?

今日は、興味深いトピックについてお話ししましょう。データベースとテーブルを分割することを検討する前に...