mysql數據庫的test類型


文章參考自

window系統參考:http://blog.sina.com.cn/s/blog_46f7bb6d0102vde3.html

linux 參考:http://www.linuxeye.com/database/2909.html

背景

公司的數據庫規范是,每個字段必須not null 且 必須有默認值

問題

設置為test類型后,字段不能設置默認值

解決(不建議取消)

取消數據庫的嚴格模式

*********windows下**********

1、 找到mysql安裝根目錄下的my.ini文件

2、 找到這樣一行:

sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

3、 在其前面加‘#’將其注釋掉:

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

4、 重啟mysql服務

5、 重新執行你的mysql語句
*************linux下*************

方法一、

1)修改my.cnf1、設置啟動參數,將默認sql_mode改為寬松模式使用命令: 

echo "sql-mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" >> /etc/my.cnf
或手動修改:
vi /etc/my.cnf
找到sql-mode關鍵字,若沒有,在文件尾添加一行
替換成:
sql-mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTIO
2)重啟mysql
service mysqld restart

方法二、修改啟動腳本

1)設置啟動腳本參數 使用命令:

sed -i "s#\"\$\*\"#--sql-mode=\"NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\"#" /etc/init.d/mysqld

或手動修改: vi /etc/init.d/mysqld 找到 other_args="$*"

改成 other_args="--sql-mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 

2)重啟mysql
service mysqld restart

原因

1、 MYSQL5.x是不允許BLOB/TEXT類型的字段擁有默認值的。

2、 由於MYSQL是在‘strict mode’嚴格模式下工作的,如果改為非嚴格模式,即可

3、 MYSQL5.x在windows下是默認以‘strict mode’工作的,當執行上面的語句時,會給你一個錯誤或者警告信息

但是嚴格模式為什么不能設置默認值的真正原因還不知道

拓展

1、何為嚴格模式  http://koda.iteye.com/blog/288882

I. Strict Mode闡述 
根據 mysql5.0以上版本 strict mode (STRICT_TRANS_TABLES) 的限制: 
1).不支持對not null字段插入null值 
2).不支持對自增長字段插入''值,可插入null值 
3).不支持 text 字段有默認值 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM