1. 程式人生 > >MySql Field '*' doesn't have a default value問題

MySql Field '*' doesn't have a default value問題

根據 text bsp 延伸 沒有 not OS 報錯信息 pos

1、問題:

寫了個註冊頁面,在本地服務器沒有報錯,上傳到空間之後出現了這個問題。

字面上來看是某個字段沒有設置默認值。

根據提示找到這條sql語句 `integral` varchar(225) NOT NULL ,這裏只設置了非空,並沒有設置默認值,可以設置默認值來排除錯誤在後面加上 DEFAULT ‘ 想要的值‘,就可以了

當然,也可以在進行數據庫操作的時候順便插入該值,也能達到相同效果。

2、思考:

為什麽在本地進行數據庫操作的時候就不報錯呢,檢查數據庫,相關字段下面的確沒有賦值。查了一下,應該是MySql 5.0以上版本都默認是Strict Mode

 Strict Mode:

  1) 不支持對not null字段插入null值
2) 不支持對自增長字段插入‘‘值,可插入null值
3) 不支持 text 字段有默認值

關閉方法:

  找到MySQL目錄下的my.ini

將sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

修改為sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

重新啟動 Mysql服務

3、延伸:

  有幾種情況同樣也可能產生同樣的報錯信息

(1) id 作為主鍵,int類型,未設置 auto_increament

(2) 少字段

MySql Field '*' doesn't have a default value問題