作者: falcon 發(fā)表日期: 2006-09-23 14:02
復(fù)制鏈接
讓mysql回歸傳統(tǒng)服務(wù)模式!
如果稍微用過(guò)mysql
你就會(huì)發(fā)現(xiàn),以前的一些版本的mysql對(duì)無(wú)效數(shù)據(jù)的約束是很“不傳統(tǒng)”的
比如,你把NULL插入NOT NULL字段,mysql服務(wù)器不會(huì)報(bào)錯(cuò)
而僅僅是出現(xiàn)警告,然后你用show warnings可以查看到底警告你什么
有些情況,它連警告都不給
如果是這樣,那些not null的字段完整性約束簡(jiǎn)直就成了一個(gè)擺設(shè)
還好,在MySQL 5.0.2之后這些約束更加嚴(yán)格拉
我們可以通過(guò)設(shè)置sql-mode環(huán)境變量來(lái)恢復(fù)“傳統(tǒng)”模式
——即對(duì)一些非空,唯一等的約束保持完整性
具體我們可以通過(guò)兩種辦法來(lái)弄
1。在啟動(dòng)mysql的時(shí)候,加入--sql-mode='STRICT_TRANS_TABLES',即
| Quote: |
|
path/to/mysqld --sql-mode='STRICT_TRANS_TABLES'
|
注意,需要有super權(quán)限。
2。啟動(dòng)后也可以設(shè)置sql-mode變量
可以是針對(duì)當(dāng)前會(huì)話的,也可以是所有會(huì)話的
| Quote: |
|
set [session|global] sql_mode='STRICT_TRANS_TABLES'
|
這樣設(shè)置了以后,就遵從標(biāo)準(zhǔn)的sql拉
在諸如把空數(shù)據(jù)插入非空字段的時(shí)候不再是警告而是報(bào)錯(cuò)并且禁止插入數(shù)據(jù)。
參考資料: