MySQL删除default后导致doesn‘t have a default value的问题

今天看SQL的时候发现,MySQL删除了默认值后,再次插入值如果没有对应字段,将会提示出错:

1364 - Field ‘City’ doesn’t have a default value, Time: 0.000000s

看了一下很多大神的解答:

打开my.ini,查找
sql-mode=“STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”
修改为
sql-mode=“NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”
然后重启MYSQL

感觉这是从MySQL软件层面上去解决问题,太复杂了可操作性很低,最简单的方案就是把对应的字段重设一个默认值为NULL就好,虽然此问题并不治本,但是速度最快影响又小。

以下为演示的MySQL语句:
1、创建表

CREATE TABLE Persons
(
    P_Id int NOT NULL auto_increment,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255) DEFAULT 'Sandnes',
    PRIMARY KEY(P_Id)
)

2、删除City的DEFAULT

ALTER TABLE Persons
ALTER City DROP DEFAULT

3、插入语句

INSERT into Persons
(LastName,FirstName,Address)
VALUES
('hua','cao','guangdong')

4、报错

1364 - Field ‘City’ doesn’t have a default value, Time: 0.000000s

5、解决方案

ALTER TABLE Persons
ALTER city set DEFAULT(NULL)

6、此时再执行一次插入语句

INSERT into Persons
(LastName,FirstName,Address)
VALUES
('tao','hei','guangdong')

7、问题解决

Affected rows: 1, Time: 0.001000s

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值