ALTER TABLE [Err] 1138 - Invalid use of NULL value

1.問題描述

因爲要更改"pb_project"表中的"is_fund_program"列爲非空,

ALTER TABLEpb_projectMODIFY COLUMNis_fund_programTINYINT (1) NOT NULL DEFAULT '0' COMMENT '是否是基金項目,0 : 不是基金項目,1:是基金項目'
錯誤信息爲:[Err] 1138 - Invalid use of NULL value

很是奇怪,其他列使用該命令可以改,爲什麼僅有這一列無法改。

2.錯誤原因

出現該錯誤的原因可能是因爲已存在的數據的‘is_fund_program’列爲null,與not null的設置衝突。(查到的原因)。

我自己認爲是因爲在剛開始新建數據表時,將該列的表結構已經設置,在後續進行更改的時候會因爲與之前的設置有衝突(至於爲什麼這裏更改時不能更改,我也沒太理解),因爲之前我在新建表的時候將編號列的結構屬性設置了。

鑑於無法設置爲非空,所以通過新建列並設置好not null,便可以成功。

3.解決辦法

1)添加新列,設置列的結構屬性。

alter table information add column ‘yyy’ varchar(255) not null first; -新添加列yyy至第一列.

2)將出錯的列內容複製到新列中並刪除出錯列

update pb_project set yyy=‘is_fund_program’; —將’is_fund_program’列的所有值複製到yyy列.

alter table pb_project drop ‘編號’; —刪除出錯的列.

3)修改新列名爲出錯的列名

alter table pb_project change ‘yyy’ ‘編號’ varchar(255) not null;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章