postgresql - Grails-重复键错误

标签 postgresql grails primary-key

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

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

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

先感谢您。

最佳答案

您很可能想在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)
}

关于postgresql - Grails-重复键错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34618665/

相关文章:

postgresql - INSERT 失败,因为主键已经存在

sql - 外键引用跨多个表的主键?

postgresql - 按与 "now"的绝对距离对时间戳(包括 future )进行排序

java - 无法在 Grails 应用程序中加载 OracleDriver

python - 如何从具有更改日志的表和 Django 中的事件表中获取可以推迟给定日期的事件?

grails - 无法找到 java 编译器 com.sun.tools.javac.Main,请更改您的类加载器设置

grails - 在Grails上使用插件Activiti启动VacationRequestSampleApplication时出错

php - 如何防止id被修改?

ruby-on-rails - 为什么 Rails 不将选择查询包装到开始提交中

java - 如何为 R2DBC PostgreSQL 配置架构