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;

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值