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プロジェクトでの双方向データバインディングの簡単な実装方法

推薦する

MySQL 起動エラーを解決する: エラー 2003 (HY000): 'localhost' の MySQL サーバーに接続できません (10061)

このエラーは初心者によく発生します。この記事では主に、エラー 2003 (HY000): '...

Linux で特定の時間にコマンドを実行する方法

先日、rsync を使用して LAN 上の別のシステムに大きなファイルを転送していました。非常に大き...

Tomcatの全体構造の簡単な紹介

Tomcat は Web コンテナとして広く知られています。Java を学び始めたときから現在の仕事...

docker によってプルされたイメージがどこに保存されるかの詳細な説明

docker によってプルされたコマンドは、デフォルトでは /var/lib/docker/ フォル...

Navicat 経由で MySQL にリモート接続する方法

Navicat を使用して IP 経由で直接接続すると、次のようなさまざまなエラーが報告されます: ...

ボタンをクリックした後のCSS読み込み効果を実現する

自社製品にクリック後1~2秒待機時間があるボタン(確認メールを送信する)があるため、クリック後の1~...

MySQL 5.7.21 解凍版のインストールと設定方法のグラフィックチュートリアル

私は頻繁にシステムをインストールするので、インストールのたびにいくつかのソフトウェアを再インストール...

Vue はネストされたルーティングメソッドの例を実装します

1. ネストされたルーティングはサブルーティングとも呼ばれます。実際のアプリケーションでは、通常、ネ...

測定画像HTTPリクエスト

一般的なブラウザでテスト ページを開き、Fiddler で http リクエストを表示してください。...

一般的なCSS3アニメーションの実装方法

1. 何ですかCSS アニメーションは、CSS を使用して拡張マークアップ言語 (XML) 要素をア...

実行後にdocker nginxにアクセスできない問題の解決策

## 1最近、docker デプロイメントを学習しており、当初は nginx を docker 化す...

Vue3+スクリプト設定+ts+Vite+Volarプロジェクト

目次Viteを使用してvue + tsプロジェクトを作成するVue 3の3つの構文オプションAPIコ...

Linux のバックグラウンドで & と nohup を使用する方法

ターミナルやコンソールで作業しているときは、メールを読むなど、もっと重要な作業があるかもしれないので...

Docker のホスト間コンテナ通信オーバーレイ実装プロセスの詳細な説明

サーバーも 2 つあります。準備:コンテナのホスト名を設定する consul: kv タイプのストレ...

Linux は n 日前のログとサンプルコマンドを自動的に削除します

1. ファイル削除コマンド:対応するディレクトリを検索します -mtime + 日数 -name &...