我有一个sql转储文件,我导入到我的数据库。此sql转储中的所有记录的id都从900到2500开始。
所以问题是如果我将从我的rails应用程序创建新记录,它将获得自动id = 1,下一个将获得2,3,4等我猜我什么时候我将创建我的900s记录,我将得到一个错误,因为id = 900已经存在。
注意:我无法将我的id更改为从我的sql转储文件中的1开始,因为另一个表通过id引用它。
有没有解决方案?
我使用PostgreSQL
答案 0 :(得分:3)
Rails获取它在数据库中使用的id,在postgres的情况下,每个表的id
字段都有相应的序列,所以为了让Rails跳过id
的那个块。 {1}}你只需要更新相应的序列:
ALTER SEQUENCE plural_table_name_id_seq RESTART WITH 2501;
如果您愿意,可以将其放入Rails迁移中,或者只在数据库上运行它。