在Rails创建中更改PostgreSQL默认ID序列

时间:2015-06-24 03:41:22

标签: ruby-on-rails postgresql

我有一个sql转储文件,我导入到我的数据库。此sql转储中的所有记录的id都从900到2500开始。

所以问题是如果我将从我的rails应用程序创建新记录,它将获得自动id = 1,下一个将获得2,3,4等我猜我什么时候我将创建我的900s记录,我将得到一个错误,因为id = 900已经存在。

注意:我无法将我的id更改为从我的sql转储文件中的1开始,因为另一个表通过id引用它。

有没有解决方案?

我使用PostgreSQL

1 个答案:

答案 0 :(得分:3)

Rails获取它在数据库中使用的id,在postgres的情况下,每个表的id字段都有相应的序列,所以为了让Rails跳过id的那个块。 {1}}你只需要更新相应的序列:

ALTER SEQUENCE plural_table_name_id_seq RESTART WITH 2501;

如果您愿意,可以将其放入Rails迁移中,或者只在数据库上运行它。