我正在帮朋友的rails应用程序。他们有一个包含许多表的数据库,这些表是使用SQL而不是使用rails迁移手动添加的。他们已经开始正常添加迁移,但他们需要让两者同步。
如果我们现在添加迁移,它们将会出错,因为这些表/列已经存在。如果我们将它们遗漏,人们必须使用db:schema:load来启动和运行,然后按名称一次运行一次迁移以避免错误。我们想避免这种情况,而是恢复健康状态。
有谁知道更好的方法让迁移与数据库同步?我们必须这样做而不会丢失任何数据。
答案 0 :(得分:2)
这是question with the same problem(由于较旧的人没有接受答案,所以没有投票支持关闭你的副本):
解决方案有:
- 首先在
中引用您现有的MySQL数据库s.apply(lambda x: bool(set(x).intersection(test))) 0 True 1 True 2 True 3 True dtype: bool
。- 运行
database.yml
以生成rake db:schema:dump
文件- 将
醇>schema.rb
中的create_table
方法粘贴到新的迁移中,然后使用Voila!
为了避免任何不一致,您可以随时检查该表是否已存在,如果是,则完全跳过迁移:
schema.rb
答案 1 :(得分:1)
备份表中不存在的表内容后 迁移,你可以:
DROP
这些表格; 这样,迁移就没有问题了。
如果您没有相关数据,请立即DROP
。