mysql欄位預設值不生效的問題解決(上)

2021-09-01 14:43:58 字數 918 閱讀 7653

[size=large] 在專案中使用mybatis做為持久層框架,mysql資料庫。專案上線前,dba要求我們將每張資料庫表中的字段都設定預設值和not null。之前專案中有一些insert語句是將表中所有欄位都列出來,然後把它做為乙個通用的插入語句來使用。舉個簡單的例子:假如一張資料庫表blog中有如下幾個字段:id,title,content,author,除id外,每個欄位都設定了預設值empty string(空字串),寫的乙個insert語句是這樣的:[/size]

insert into blog(title,author,content)

values(#,#,#)

[size=large]原以為有這麼乙個insert語句就萬事大吉了,我們以為,以後做插入操作的時候,無論有多少個字段,都使用這乙個insert語句,如果字段沒有值,就會被賦值為mysql欄位的預設值。。。

但事實證明,根本不是這樣的。

當我們只給title欄位賦值,然後執行乙個insert語句時,mybatis馬上報出這樣的異常:[/size]

caused by: com.mysql.jdbc.exceptions.mysqlintegrityconstraintviolationexception: column 'content' cannot be null

[size=large]顯然,所有字段規定了not null,看來按照這種insert的方法,未賦值的字段並沒有賦值為mysql的預設值。

那麼如果把資料庫欄位的not null限制去掉呢?

再次執行剛才的insert操作,這次沒有丟擲異常,但檢視資料庫後,我們發現,新插入的表記錄中,沒有賦值的字段仍然不是mysql的預設值,而是null值。[/size]

[size=large]

Mysql 修改字段預設值

mysql 5.7.13 問題描述 建表的時候,users info表的role id欄位沒有預設值,後期發現註冊的時候,需要提供給使用者乙個預設角色,也就是給role id欄位乙個預設值。當前users info表的role id 在建立表的時候,沒有設定預設值,資料庫自動設定為空。原先建表語句 ...

mysql查詢表字段預設值

mysql查詢表字段預設值。假設表user有個字段 login times int 11 unsigned not null default 0 comment 登入次數 需要獲取該字段的預設值,實現方法 desc user 查詢結果 field type null default id varch...

mysql 個別字段設定預設值

專案中經常遇到一些問題 新增到表中資料一般不會出現什麼錯誤,反而讀取資料各種報錯 像我這種,自以為很簡單的讀取,也不debug,直接獲取資料,然後。非常浪費時間,有個別報錯。檢視的時候,原來是某個欄位為空 轉化 資料型別的出現錯誤。解決辦法 那就是 設定預設值 我試過在實體裡新增預設值 沒有效果 資...