数据库序列重置后无法查看新创建的记录

时间:2016-02-26 13:57:24

标签: ruby-on-rails postgresql heroku

所以我的数据库遇到了一些问题。我有导入功能,我用它导入几千条记录。现在我在本地开发(SQLite),一切正常。我将更新推送到heroku,我有一个PostgreSQL数据库。我在那里运行我的导入,它似乎也运作良好。现在,我正在尝试在该表中手动创建另一条记录,并且我不断收到唯一ID重复的错误。因此,经过一些在线搜索后,我将此扩展创建为活动记录:

def self.reset_pk_sequence
  case ActiveRecord::Base.connection.adapter_name
    when 'SQLite'
      new_max = maximum(primary_key) || 0
      update_seq_sql = "update sqlite_sequence set seq = #{new_max} where name = '#{table_name}';"
      ActiveRecord::Base.connection.execute(update_seq_sql)
    when 'PostgreSQL'
      ActiveRecord::Base.connection.reset_pk_sequence!(table_name)
    else
      raise "Task not implemented for this DB adapter"
  end
end

我把它放在我的桌子上,而ID正在从它应该的位置开始计算(3000而不是1,2,3等)。

我现在的问题是我能够在我的表中创建新记录,并在索引页面中看到它们。但是,当我尝试打开该特定记录时,我收到此错误:

您要查找的页面不存在。 您可能输错了地址或页面可能已移动。

我索引的链接只是记录的ID。当我检查控制台中是否存在此ID时,我完全能够找到该记录。这里出了什么问题?

1 个答案:

答案 0 :(得分:0)

我明白了。我有一些空关联,我试图在视图中显示。这个错误让我失望,因为我的记录似乎出了问题。