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