ホームページ >データベース >mysql チュートリアル >mysql strict モードの使用方法 Strict モード
mysql インストール ディレクトリで my.cnf (Windows システムの場合は my.ini) ファイルを見つけます。
sql_mode に STRICT_TRANS_TABLES を追加すると、ストリクト モードがオンになります。追加されない場合は、非ストリクト モードになります。変更後、mysql を再起動します。
例: これは、ストリクト モードがオン:
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
CREATE TABLE `mytable` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `content` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;1. null でないフィールドは null 値を挿入します test
レコードを挿入します。name の値は nullです
非厳密モードで実行します
mysql> insert into mytable(content) values('programmer'); Query OK, 1 row affected, 1 warning (0.00 sec) mysql> select * from mytable; +----+------+------------+ | id | name | content | +----+------+------------+ | 1 | | programmer | +----+------+------------+ 1 row in set (0.00 sec)実行は成功しました。name の値は null名前は自動的に「#Execute in strict mode
mysql> insert into mytable(content) values('programmer');
ERROR 1364 (HY000): Field 'name' doesn't have a default value
実行に失敗し、フィールド名を null 値にすることはできないというメッセージが表示されます。
2 .「自動インクリメント フィールドの値テスト」を挿入します。
ID フィールドに「値を挿入」非厳密モードで実行されます
mysql> insert into mytable(id,name,content) value('','fdipzone','programmer');
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> select * from mytable;
+----+----------+------------+
| id | name | content |
+----+----------+------------+
| 1 | fdipzone | programmer |
+----+----------+------------+
1 row in set (0.00 sec)
実行に成功しました
mysql> insert into mytable(id,name,content) value('','fdipzone','programmer');
ERROR 1366 (HY000): Incorrect integer value: '' for column 'id' at row 1
実行に失敗し、フィールド ID を「
mysql> insert into mytable(id,name,content) value(null,'fdipzone','programmer'); Query OK, 1 row affected (0.00 sec) mysql> select * from mytable; +----+----------+------------+ | id | name | content | +----+----------+------------+ | 1 | fdipzone | programmer | +----+----------+------------+ 1 row in set (0.00 sec)
If フィールド ID にすることはできません」というプロンプトが表示されました。 id が null の場合、実行は成功する可能性があります。
3. テキスト フィールドのデフォルト値 test
データ テーブル mytable を 1 つ作成します。テキストにはデフォルト値が設定されます。default=”非厳密モードで実行されました
mysql> CREATE TABLE `mytable` (
-> `id` int(11) NOT NULL AUTO_INCREMENT,
-> `name` varchar(20) NOT NULL,
-> `content` text NOT NULL default '',
-> PRIMARY KEY (`id`)
-> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected, 1 warning (0.03 sec)
mysql> show tables;
+------------------------------+
| Tables_in_test_version |
+------------------------------+
| mytable |
+------------------------------+
正常に実行されました
mysql> CREATE TABLE `mytable` (
-> `id` int(11) NOT NULL AUTO_INCREMENT,
-> `name` varchar(20) NOT NULL,
-> `content` text NOT NULL default '',
-> PRIMARY KEY (`id`)
-> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ERROR 1101 (42000): BLOB/TEXT column 'content' can't have a default value
失敗しました実行すると、コンテンツ フィールドのタイプが TEXT であり、デフォルト値は使用できないことを示すプロンプトが表示されます。
以上がmysql strict モードの使用方法 Strict モードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。