我正在编写一个迁移,将非rails应用转换为适合rails的正确格式 - 其中一个表由于某种原因没有在id列上设置自动增量。在迁移过程中是否有快速启用它的方法,可能是change_column
或其他?使用rails迁移创建丢失的自动增量属性
9
A
回答
7
您需要执行一条SQL语句。
statement = "ALTER TABLE `users` CHANGE `id` `id` SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT"
ActiveRecord::Base.connection.execute(statement)
注意这只是一个例子。最终的SQL语句语法取决于数据库。
6
如果你在postgesql上,一个请求不会产生。您需要在数据库中创建一个新的序列。
create sequence users_id_seq;
然后将ID列添加到您的表
alter table users
add id INT UNIQUE;
然后设置的默认值的ID
alter table users
alter column id
set default nextval('users_id_seq');
然后填充ID列。这可能是相当长,如果表中有许多行
update users
set id = nextval('users_id_seq');
希望这有助于PostgreSQL用户。...
+0
谢谢!这非常有帮助! – 2011-01-05 23:14:08
5
的Postgres answer by @jlfenaux错过了上serial
类型,它可以自动完成所有的它为您:
ALTER TABLE tbl add tbl_id serial;
相关问题
- 1. Rails 3迁移:(非主键)列上的自动增量?
- 2. mysql导出丢失自动增量
- 3. 使用phinx迁移库的非主键列的自动增量
- 4. Rails 4手动创建迁移
- 5. Rails创建动态属性
- 6. Laravel 4:如何使用迁移创建非主自动递增列?
- 7. MySQL的自动增量绑定属性
- 8. 如何使窗体中的用户创建对象时创建类自动增量的ID属性?
- 9. 无法在环回自动迁移上创建唯一索引自动迁移()
- 10. 在Rails迁移中从0自动递增
- 11. 如何重置ActiveRecord迁移中的自动增量字段?
- 12. 更改迁移中的自动增量值(PostgreSQL和SQLite3)
- 13. 分贝:自动:在迁移的Rails 3
- 14. 迁移到新的2.0 ant任务声纳时丢失的必要属性
- 15. 创建自动增量与前文
- 16. 如何创建自动增量主键?
- 17. 如何创建自动增量字段
- 18. Rails ActiveRecord迁移成功迁移后不创建一些列
- 19. Rails迁移问题 - 外键未创建
- 20. 自动增加xml属性
- 21. Rails的:如何创建添加迁移“使用:B树”外键
- 22. 如何使用Rails中的迁移创建mysql触发器?
- 23. 如何在迁移laravel 5.3中设置不自动增量?
- 24. 代码首先迁移创建另外的属性
- 25. UIPopoverController的PopoverBackroundViewClass属性丢失
- 26. 耙分贝:迁移丢失:控制器
- 27. 使用NetBeans IDE在Java DB中创建自动增量密钥
- 28. 如何使用batch for loop创建自动增量文件?
- 29. 如何使用Rails :: Generators.invoke(“active_record:migration”)生成创建表迁移文件?
- 30. 如何在将属性添加到属性后使用迁移?
非常感谢@Simone Carletti酒店,浪费了整整一天来解决这个问题,但现在它的解决,感谢DGM也为postin g特定于我的案例的问题。你能不能以一种奇特的方式让我想起在rails 4.1中编写存储过程,希望你们能够再次帮助我。快乐的编码。 – roarfromror 2015-04-10 11:49:57
我不知道在使用存储过程的rails中有太多活动 - rails的某些角落对于SQL的更强大的方面几乎没有用处,其他人只是不知道它......无论如何,至少您可以使用这同样的形式来编写SQL来创建存储过程。 – DGM 2015-04-10 19:33:58