相关疑难解决方法(0)

如何在postgres不同步时重置postgres的主键序列?

我遇到了我的主键序列与我的表行不同步的问题.

也就是说,当我插入一个新行时,我得到一个重复的键错误,因为串行数据类型中隐含的序列返回一个已经存在的数字.

这似乎是由导入/恢复不能正确维护序列引起的.

postgresql primary-key database-sequence

482
推荐指数
17
解决办法
23万
查看次数

重置rails中的主键ID

当我从表中delete_all并再次开始插入时,我对主键如何增加有问题.这是有问题的,因为我有其他模型与清除表相关联.例如,如果我拥有属于计算机的Apple,那么当我清除计算机表并重新添加计算机时,关联就会搞乱,因为Apple现在在其行中有婴儿computer_id.我希望能够重置计算机的主键,以便在重新添加计算机时,关联仍然保持不变.我应该如何在铁轨中这样做?

编辑 我很抱歉没有明白这一点,但现在我会告诉你我想要做什么.我希望用户与机器(计算机)相关联.计算机有自己的ID,只能由管理员创建.计算机表中有一定数量的计算机.

User
belongs_to :computer

Computer
has_many :users
Run Code Online (Sandbox Code Playgroud)

我面临的问题是,我将计算机表预装在seeds.rb/rakefile中.当我启动我的应用程序时,我想只运行首先删除所有内容然后预加载表的文件.这将允许用户仅从计算机表中提供的计算机中选择计算机.我希望能够再次运行此脚本(例如在heroku控制台中,而不删除User表),并且仍然获得与每台计算机相关联的相同ID(因此也与每个用户相关).我对如何做到这一点很困惑.如果我不应该这样做,请告诉我.

ruby-on-rails ruby-on-rails-3

3
推荐指数
1
解决办法
6123
查看次数