Rumah > Artikel > pangkalan data > Cara menggunakan mod ketat mysql Mod Ketat
Cari fail my.cnf (my.ini for windows system) dalam direktori pemasangan mysql
Menambah STRICT_TRANS_TABLES ke sql_mode bermakna menghidupkan mod ketat Jika ia tidak ditambah, ini bermakna mod tidak ketat selepas pengubahsuaian
Sebagai contoh, ini bermakna mod ketat dihidupkan. :
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
Tidak menyokong sisipan nilai. ke dalam medan bukan nol
Tidak menyokong memasukkan "nilai" ke dalam medan yang meningkat sendiri
Tidak menyokong nilai lalai untuk medan teks
Buat jadual data untuk memudahkan ujian
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;
Laksanakan dalam mod tidak ketat
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)
Laksanakan dengan jayanya, nilai nama ialah ditukar secara automatik kepada "
mysql> insert into mytable(content) values('programmer');
ERROR 1364 (HY000): Field 'name' doesn't have a default value
Pelaksanaan gagal, menyebabkan nama medan tidak boleh menjadi nilai nol
2. Masukkan " ujian nilai untuk medan meningkat sendiri
Sisipkan "nilai untuk medan idDilaksanakan dalam mod tidak ketat
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)
Dilaksanakan dengan jayanya
mysql> insert into mytable(id,name,content) value('','fdipzone','programmer');
ERROR 1366 (HY000): Incorrect integer value: '' for column 'id' at row 1
Pelaksanaan gagal, menyebabkan id medan tidak boleh "
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)
Jika id medan adalah batal, pelaksanaan boleh berjaya
3. Ujian nilai lalai medan teks
Buat satu jadual data mytable, dengan teks menetapkan nilai lalai="Dilaksanakan dalam mod tidak ketat
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 |
+------------------------------+
Dilaksanakan dengan jayanya
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
gagal, menyebabkan medan kandungan adalah jenis TEXT dan nilai lalai tidak boleh digunakan.
Atas ialah kandungan terperinci Cara menggunakan mod ketat mysql Mod Ketat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!