gpt4 book ai didi

ruby-on-rails-3 - 如何在 ActiveRecord 迁移中重置自动增量字段?

转载 作者:行者123 更新时间:2023-12-03 15:12:00 26 4
gpt4 key购买 nike

在我的迁移中,我有:

def up
MyModel.destroy_all
MyModel.create!({:id=>1,:name=>'foo'})
MyModel.create!({:id=>2,:name=>'fooBar'})
MyModel.create!({:id=>3,:name=>'fooNull'})
end

因为我需要覆盖 my_models 表中已经存在的数据

但即使我指定了 id在 MySQL 上,它从它已经存在的位置继续编号。

我需要将计数器放在 id 的自动增量上通过我的 Ruby on Rails 应用程序上的 Active Record 迁移,只有这 3 个具有该 id 值的新记录。

最佳答案

您有 2 个不同的问题。一是您试图通过批量分配来指定 id,rails 不允许您这样做。见 Overriding id on create in ActiveRecord一种方法来做到这一点。

另一个问题是自动增量没有重置。每个 DBMS 都有一种设置增量计数器的独特方式,而 rails 并没有给您一个通用的方式来访问它们,尽管它是为其中一些(不是 MySQL)实现的,参见 Rails way to reset seed on id field

因此,您需要为此运行 MySQL 特定的 SQL,类似于:

ALTER TABLE my_models AUTO_INCREMENT = 1;

这应该重置为表中最大 id 之后的数字(如果没有,则为 1)

关于ruby-on-rails-3 - 如何在 ActiveRecord 迁移中重置自动增量字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8853826/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com