mysql strictモードの説明 Strictモード

jacklove
リリース: 2018-06-09 09:47:44
オリジナル
2235 人が閲覧しました

1. Strict モードをオンまたはオフにする方法

sql_modemy.cnf

(Windows システムの場合は my.ini) ファイル

を見つけ、mysql に STRICT_TRANS_TABLES を追加します。インストールこれが追加されていない場合は、変更後に mysql を再起動するだけです。これは、sql_mode=NO_ENGINE_SUBSTITUTION,

STRICT_TRANS_TABLES


を意味します。 2. Strict Mode 関数の説明

非 null フィールドへの null 値の挿入をサポートしません

  • 自己増加フィールドへの「値」の挿入をサポートしません

  • デフォルト値のテキストフィールドをサポートします

  • 3 .例:

テストを容易にするためにデータテーブルを作成します
<span style="color: rgb(0, 0, 0);">CREATE TABLE `mytable` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `content` text NOT NULL, PRIMARY KEY (`id`)<br/>) ENGINE=InnoDB DEFAULT CHARSET=utf8;</span>
ログイン後にコピー

1.not null field insert null value test

レコードを挿入します、 name の値は null です

非厳密モード 厳密モードで実行されました

<span style="color: rgb(0, 0, 0);">mysql> insert into mytable(content) values(&#39;programmer&#39;);<br/>Query OK, 1 row affected, 1 warning (0.00 sec)mysql> select * from mytable;<br/>+----+------+------------+| id | name | content    |<br/>+----+------+------------+|  1 |      | programmer |<br/>+----+------+------------+1 row in set (0.00 sec)</span>
ログイン後にコピー
実行は成功しました、名前の値は自動的に変換されます 実行に失敗しました、プロンプト フィールド名を null 値にすることはできません

2. 自動インクリメントフィールドに「値テスト」を挿入します

ID フィールドに「値を挿入します 」 非厳格モードで実行されます

<span style="color: rgb(0, 0, 0);">mysql> insert into mytable(content) values(&#39;programmer&#39;);ERROR 1364 (HY000): Field &#39;name&#39; doesn&#39;t have a default value</span>
ログイン後にコピー

正常に実行されました

厳密モードで実行されました

<span style="color: rgb(0, 0, 0);">mysql> insert into mytable(id,name,content) value(&#39;&#39;,&#39;fdipzone&#39;,&#39;programmer&#39;);<br/>Query OK, 1 row affected, 1 warning (0.00 sec)mysql> select * from mytable;<br/>+----+----------+------------+| id | name     | content    |<br/>+----+----------+------------+|  1 | fdipzone | programmer |<br/>+----+----------+------------+1 row in set (0.00 sec)</span>
ログイン後にコピー
実行に失敗しました、フィールド ID を「

<span style="color: rgb(0, 0, 0);">mysql> insert into mytable(id,name,content) value(&#39;&#39;,&#39;fdipzone&#39;,&#39;programmer&#39;);<br/>ERROR 1366 (HY000): Incorrect integer value: &#39;&#39; for column &#39;id&#39; at row 1</span>
ログイン後にコピー
」にすることはできないというプロンプトが表示されます。フィールドIDがnullの場合は正常に実行できます

3. テキストフィールドのデフォルト値テストテキストにデフォルト値default=”を設定するデータテーブルmytableを作成します

非厳密モード

<span style="color: rgb(0, 0, 0);">mysql> insert into mytable(id,name,content) value(null,&#39;fdipzone&#39;,&#39;programmer&#39;);<br/>Query OK, 1 row affected (0.00 sec)mysql> select * from mytable;<br/>+----+----------+------------+| id | name     | content    |<br/>+----+----------+------------+|  1 | fdipzone | programmer |<br/>+----+----------+------------+1 row in set (0.00 sec)</span>
ログイン後にコピー

実行成功

厳密モードで実行されました

<span style="color: rgb(0, 0, 0);">mysql> CREATE TABLE `mytable` (    ->  `id` int(11) NOT NULL AUTO_INCREMENT,    ->  `name` varchar(20) NOT NULL,    ->  `content` text NOT NULL default &#39;&#39;,    ->  PRIMARY KEY (`id`)    -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;Query OK, 0 rows affected, 1 warning (0.03 sec)mysql> show tables;<br/>+------------------------------+| Tables_in_test_version       |<br/>+------------------------------+| mytable                      |<br/>+------------------------------+</span>
ログイン後にコピー
実行が失敗しました。コンテンツフィールドのタイプが TEXT であることを示すプロンプトが表示されますデフォルト値は使用できません。

要約すると、mysql strict モードを使用すると、データをより安全かつ厳密にすることができますが、欠点は、空のデータ ストレージの互換性が低下することです。コードの品質とデータの厳密性を向上させるために、開発環境では厳密モードを使用することをお勧めします。

この記事は mysql strict モード Strict Mode について説明していますか? 関連する推奨事項の詳細については、php 中国語 Web サイトに注意してください。

関連する推奨事項:

PHPでexplodeを使用して文字列を分割するときに初心者が見落としやすい問題の説明

mysql交換テーブル方法論を説明します

phpを通して0~1のランダムな10進数メソッドを生成する方法

以上がmysql strictモードの説明 Strictモードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート