Peewee主键未显示(失败行包含null)

时间:2019-01-01 02:50:18

标签: python postgresql peewee

我正在使用peewee ORM管理一些Postgres数据库。我最近遇到了一个问题,即在调用save()execute()时应该不会自动添加主键。

这是被调用的代码: Macro.insert(name=name, display_text=text).on_conflict(conflict_target=(Macro.name,), preserve=(Macro.display_text,), update={Macro.name: name}).execute()

这是错误: Command raised an exception: IntegrityError: null value in column "id" violates non-null constraint; DETAIL: Failing row contains (null, nametexthere, displaytexthere)

宏类具有一个id (AutoField [set to be primary key]), name (CharField), and display_text (CharField)。我尝试使用内置的PrimaryKeyField和一个IntegerField设置为主键,而无需更改。

之前,我使用Heroku没问题。从那以后,我就将应用程序迁移到了Raspberry Pi上,那时这个问题突然出现了。

这也不是我遇到这个问题的唯一情况。我有另一个具有相同AutoField主键的数据库,该数据库似乎已从Heroku过渡到Pi。那是使用save()方法而不是insert()/execute(),但是仍然显示失败的行错误。

还应该提到其他非插入查询也可以正常工作。我仍然可以选择没有问题。

1 个答案:

答案 0 :(得分:1)

该问题与Peewee无关,它与转储有关。 Heroku不会自动为您转储序列,因此我不得不手动将其全部重新添加。一旦添加了这些,连接就可以正常工作。