1. 程式人生 > 資料庫 >MySQL模式 Strict Mode知識點詳解

MySQL模式 Strict Mode知識點詳解

I. Strict Mode闡述

根據 mysql5.0以上版本 strict mode (STRICT_TRANS_TABLES) 的限制:

1).不支援對not null欄位插入null值

2).不支援對自增長欄位插入''值,可插入null值

3).不支援 text 欄位有預設值

看下面程式碼:(第一個欄位為自增欄位)

Sql程式碼

$query="insert into demo values('','$firstname','$lastname','$sex')"; 

上邊程式碼只在非strict模式有效。

Code程式碼

$query="insert into demo values(NULL,'$sex')"; 

上邊程式碼只在strict模式有效。把空值''換成了NULL.

II.讓資料庫支援Strict Mode

1.對資料庫結構進行以下改進來支援strict mode:

1) 給所有not null欄位都設定非null預設值,字串預設值為 '',數值預設值為 0,日期預設值為 '0000-00-00 00:00:00'

2) 去掉text欄位的預設值

3) 規範化改進: 把 title 欄位統一改為 varchar(255),把有預設值的null欄位改為not null欄位

2.如果安裝的PHP程式資料庫結構關閉Strict mode

1).一個是安裝mysql5.0(含以上)版本的時候去掉strict mode。

編輯 my.cnf,關閉Strict Mode:

sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

2). 另一個就是修改查詢語句。例如在

if ($this->dbcharset) {
@mysql_query("SET NAMES ".$this->dbcharset);
}

後面執行

mysql_query("SET @@sql_mode = ''");

注意確定你使用的是MySQL5

mysqli方式類似,就是執行的是

mysqli_query($this->connection_id,"SET @@sql_mode = ''");

到此這篇關於MySQL模式 Strict Mode知識點詳解的文章就介紹到這了,更多相關MySQL模式 Strict Mode內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!