Grails - 重复键错误

时间:2016-01-05 18:22:53

标签: postgresql grails primary-key

我正在使用postgres数据库,我从csv文件导入数据。当我尝试从Grails创建页面添加新条目时,它会给出

ERROR: duplicate key value violates unique constraint "course_pkey" Detail: Key (id)=(34) already exists.

表格中已有697个条目。如何让Grails继续保存id = 698的条目?

提前谢谢。

2 个答案:

答案 0 :(得分:0)

您很可能希望在Postgres数据库中使用SERIAL类型作为主键。 SERIAL类型自动递增并将默认值设置为下一个值。 Grails defaults使用Hibernate's native (see section 5.1.2.2.1) id生成器策略,它将使用底层数据库。然后,您只需要在域实例中不指定id并生成id。

但是,如果您需要尝试下一个id值的确切用例,可以使用try catch块。

try {
    course.save(flush: true)
} catch (DuplicateKeyException e) { // Not sure what the exact exception is
    course.id++
    course.save(flush: true)
}

答案 1 :(得分:0)

您可以在休眠状态下查看 de id secuen

select * from hibernate_sequence ; 

Amazon recommend awsvpc

对于 PostgreSQL,您可以在 pgAdmin 中编辑字段 last_value