LNMP下MySQL關閉Strict Mode嚴格模式

開啓與關閉Strict Mode方法

找到/etc/my.cnf(windows系統則是my.ini)

開啓

mysqld作用域下增加sql_mode = STRICT_TRANS_TABLES

關閉

mysqld作用域下增加sql_mode = NO_ENGINE_SUBSTITUTION

重啓

lnmp mysql restart

臨時修改

mysql -uroot -p
set global sql_mode=''; #會話關閉之後狀態修改就消失
select @@sql_mode; #查看模式狀態
# 下面兩個是網絡上的 可以試驗一下
#set sql_mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";
#set sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

Strict Mode功能說明

  • 不支持對not null字段插入null值
  • 不支持對自增長字段插入”值
  • 不支持text字段有默認值

驗證

創建數據表方便測試

select @@sql_mode; #查看模式狀態
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;

非嚴格模式

not null字段插入null值測試

insert into mytable(content) values('programmer');
執行成功,name的值自動轉爲null

自增長字段插入null值測試

insert into mytable(id,name,content) value('','fdipzone','programmer');
執行成功,id自增長

text字段默認值測試

CREATE TABLE `mytable_default` (
`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;

mysql非嚴格模式

嚴格模式下

not null字段插入null值測試

insert into mytable(content) values('programmer');
ERROR 1364 (HY000): Field ‘name’ doesn’t have a default value
執行失敗,提示字段name不能爲null值

自增長字段插入null值測試

insert into mytable(id,name,content) value('','fdipzone','programmer');
ERROR 1366 (HY000): Incorrect integer value: ‘’ for column ‘id’ at row 1
執行失敗,提示字段id不能爲null
insert into mytable(id,name,content) value(null,'fdipzone','programmer');
字段id爲null則可執行成功

text字段默認值測試

CREATE TABLE `mytable_default` (
`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
執行失敗,提示content字段是TEXT類型,不能使用默認值。
mysql嚴格模式

總結

使用mysql嚴格模式可以使數據更加安全嚴格,缺點是減少了對空數據入庫的兼容性。建議開發環境使用嚴格模式以提高代碼的質量及對數據的嚴謹性。

發佈了37 篇原創文章 · 獲贊 9 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章