如何将Active记录/表ID更改为从0开始到10000?

时间:2016-09-21 09:33:32

标签: mysql ruby-on-rails activerecord

我有一个名为users的表,像往常一样所有的id 自动递增。 这是迁移:

class CreateUsers < ActiveRecord::Migration
  def self.up
    create_table :users do |t|
      t.string :name
      ...............
      t.timestamps
    end
end

现在我有了新的要求 生成的用户ID应该以1000开头。我见过一些 像this one这样的链接, 但在这里我使用sqlite3进行开发,使用mysql进行生产。 我该如何修改表格? 是否有可能在模型方面做任何事情? 请帮忙。

2 个答案:

答案 0 :(得分:1)

@RSB是正确的,您应该考虑将开发数据库更改为MySQL以保持一致性,但如果您想保留当前的设置,那么您只能在生产环境中运行此迁移,如下所示:

class ChangeStartingIdForUsers < ActiveRecord::Migration
  def self.up
    if Rails.env.production?
      execute "ALTER TABLE users AUTO_INCREMENT = 10000;"
    end
  end
end

答案 1 :(得分:1)

您需要解决的第一件事是将开发数据库更改为MySQL。开发和生产数据库应始终属于同一类型。

其次,您可以将其添加到迁移文件中以解决实际问题。

execute "ALTER TABLE users AUTO_INCREMENT = 1000;"

希望有所帮助!