日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql设置字段为空字符串_mysql数据类型字段插入空字符串自动填充为0报错

發(fā)布時(shí)間:2024/4/13 数据库 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql设置字段为空字符串_mysql数据类型字段插入空字符串自动填充为0报错 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

有一條這樣的sql語句,

insert?into?a(id,user_name)?values('','abc');

表示插入字段的時(shí)候ID插入是空字符串。這樣的情況在mysql5.6版本上執(zhí)行報(bào)錯(cuò)。在mysql5.1版本執(zhí)行可以成功,

mysql的老版本可以支持?jǐn)?shù)據(jù)類型空值,5.2以后的估計(jì)是不行了。

為什么不寫空字符串不能寫null?

這是因?yàn)閙ysql受到了字段類型的約束,設(shè)置為not null 了

NULL 和 NOT NULL 修飾符:

可以在每個(gè)字段后面都加上這NULL 或 NOT NULL 修飾符來指定該字段是否可以為空(NULL),還是說必須填上數(shù)據(jù)(NOT NULL)。MySQL默認(rèn)情況下指定字段為NULL修飾符,如果一個(gè)字段指定為NOT NULL,MySQL則不允許向該字段插入空值(這里面說的空值都為NULL),因?yàn)檫@是“規(guī)定”。

not null 表示這個(gè)字段不能為空

雖然看起來他是人為設(shè)置的 但是他和業(yè)務(wù)邏輯或者數(shù)據(jù)結(jié)構(gòu)有關(guān)系

比如你要對這條記錄進(jìn)行讀取 而這個(gè)是很重要的屬性 那么你不僅要讓其不為空 還要讓他是指定的格式或者數(shù)值

還有情況就是 這個(gè)字段恰是其他表的主鍵 那么只有他有值才能正確關(guān)聯(lián)兩張表 所以他必須有值

所以沒辦法程序員只好改了程序,把這個(gè)字段給去掉了。。。-_-_-

這種問題一般mysql?5.x上出現(xiàn)。我用的mysql5.2.28,后面查詢得知新版本mysql對空值會報(bào)錯(cuò),要在安裝mysql的時(shí)候去除默認(rèn)勾選的enable?strict?SQL?mode。如果已經(jīng)安裝好了的,就在my.ini中查找sql-mode,默認(rèn)為sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION",將其修改為sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION",重啟mysql后即可。

第一時(shí)間的反應(yīng)是跟mysql5.0新加的sql-mode有關(guān)系,因?yàn)榍耙魂囎觿倓偪催^手冊.果然,作了如下更改后就不再提示了.

修改?my.ini?文件.

#?Set?the?SQL?mode?to?strictsql-mode=”STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”

改為:

#?Set?the?SQL?mode?to?strictsql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

總結(jié)

以上是生活随笔為你收集整理的mysql设置字段为空字符串_mysql数据类型字段插入空字符串自动填充为0报错的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。