MySQL欄位預設值踩坑記錄

2021-09-25 06:18:43 字數 1110 閱讀 4167

由於測試環境**更新到了最新版,但是db結構未更新導致測試環境丟擲大量異常,同步測試環境表結構時執行了以下sql語句

alter table `***_server`

add column `***_name` varchar(50) not null default '' comment '***',

add key `idx_***_name` (***_name)

在***_server表中新增了***_name欄位,預設值設定為空字串。

2018.08.20 測試環境又丟擲大量異常,異常資訊如下

com.mysql.jdbc.exceptions.jdbc4.mysqlintegrityconstraintviolationexception: column '***_name' cannot be null
看起來是因為***_name欄位為null導致的,可是明明已經設定了預設值為空字串,為何這裡還會拋這個異常?

於是在網上找答案,看到了下面這篇

原來當sql語句中沒有指定***_name時才會將其值設定為空字串。如果sql中給***_name指定了null值,insert時就會拋上面的錯誤。

建表測試

create table `table_test` (

`id` int(11) not null auto_increment,

`username` varchar(50) not null default '',

`password` varchar(50) not null default '',

primary key (`id`)

) engine = innodb auto_increment = 2

執行以下語句時正確插入資料

insert into table_test (username) values ('admin');
執行以下語句時會丟擲異常

insert into table_test (username, password) values ('admin', null);

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,直接獲取資料,然後。非常浪費時間,有個別報錯。檢視的時候,原來是某個欄位為空 轉化 資料型別的出現錯誤。解決辦法 那就是 設定預設值 我試過在實體裡新增預設值 沒有效果 資...