文章内容

2021/6/17 15:30:29,作 者: 黄兵

Field 'id' doesn't have a default value

在向MySQL插入数据的时候出现了如下错误:

MySQLdb._exceptions.IntegrityError: (1364, "Field 'id' doesn't have a default value")

出现错误的原因:

没有设置主键自增。

使用的是SQLAlchemy,具体模型定义如下:

class IPV4PublicAddress(db.Model):
__tablename__ = 'ip_v4_public_address'
id = db.Column(db.BigInteger, primary_key=True)

解决方案:

设置id自增,再SQLAlchemy模型中,修改代码如下:

class IPV4PublicAddress(db.Model):
__tablename__ = 'ip_v4_public_address'
id = db.Column(db.BigInteger, primary_key=True, autoincrement=True)

但是这样设置好像对数据库没有任何更改,自能手动修改数据库,设置id自增。

alter table ip_v4_public_address modify id bigint auto_increment;

如果此id是其他表的外键,还需要将其他表删除外键之后才能执行以上SQL


参考资料:

1、Field 'id' doesn't have a default value?

2、SQLAlchemy: How to make an integer column auto_increment (and unique) without making it a primary key?


黄兵个人博客原创。

转载请注明出处:黄兵个人博客 - Field 'id' doesn't have a default value

分享到:

发表评论

评论列表