||  網站導覽  ||  留言版
 
  站長 x 管理人
 
  文章分類
    JAVA
    Database資料庫
       FQL
       MSSQL
       MySQL
       不分類
    應用程式
    文書處理
    normal一般設定
    Web-design網頁設計
    Virtual Machine虛擬機器
    MIS網管
    media多媒體
    未分類
 
 
 
 
mysql:Field '欄位' doesn't have a default value
 
 
 
 
前陣子有客戶自行在mysql多加了幾個欄位

結果新增資料時,出現了一個錯誤訊息:
「Field '欄位' doesn't have a default value」

問題是發生在insert的語法沒有包括這個欄位,
而這個欄位又設為不允許為null

但在不同機器上,又有些可以跑

爬文之後,
發現問題點在於有些機器的mysql設定了STRICT_TRANS_TABLES
sql-mode="STRICT_TRANS_TABLES,..."
STRICT_TRANS_TABLES拿掉就ok了


下SHOW VARIABLES查詢的結果:

centos5.6
mysql: 5.0.77
sql_mode=沒東西
 
 
winxp
appserv5.2.10,mysql: 5.0.51b-community-nt-log
sql_mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
 
server2008
mysql: 5.5.28
sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION


註:
my.ini/my.cnf用的是sql-mode  =>中間是減號

SHOW VARIABLES出現的是sql_mode  =>中間是底線

參考資料:
http://www.weste.net/2013/5-5/90995.html
 
 
 
 
 
Copyright © 2012 NBOX. All Rights Reserved.