ruby-on-rails-3 – 如何在ActiveRecord迁移中重置自动增量字段
发布时间:2020-12-16 22:12:06 所属栏目:百科 来源:网络整理
导读:在我的迁移我有: 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表上的数据 但是即使我在MySQL上指定了id,它仍然
在我的迁移我有:
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表上的数据 但是即使我在MySQL上指定了id,它仍然是从已经存在的位置继续编号. 我需要把计数器放在id的自动增量上,通过我的Ruby on Rails应用程序上的Active Record迁移,才能拥有这个id值的3个新记录. 解决方法
你有两个单独的问题.一个是你试图用大量的分配来指定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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- cocos2d学习(02)——CCApplication类中的run方法分析
- flex 学习笔记 filereference(二)
- PostgreSQL9.6:Parallel sequential scans 初体验
- Oracle 导出CSV、导出大数据
- flex加载jwplayer的解决办法
- ruby-on-rails – 如何在heroku中获取共享数据库URL
- 《你必须知道的.net》读书笔记 006——2.2 单一职责原则
- ruby-on-rails – form_for中的text_field_with_auto_compl
- flex 带按钮的下拉菜单
- 在nand flash上实现JFFS2根文件文件系统