两个类似的应用共享数据库。在一个迁移迁移。无法在第二个上运行相同的迁移

时间:2014-11-12 07:17:36

标签: ruby-on-rails database-migration

我正在使用Heroku,并且有两个共享相同PG数据库的应用程序。第二个是第一个的增强版本,我试图逐渐从第一个过渡到第二个。但与此同时,我必须保持两个运行。这是我做的:

  1. 我将App#1克隆到App#2中,并对App#2进行了一些改进。
  2. 从App#1开始,我运行了迁移以添加索引(在成员资格表上添加了user_id索引)。它运作良好。
  3. 从App#2开始,我添加了相同的迁移并尝试运行它。这次它抛出了以下错误,因为索引已存在于同一个表上的上一次迁移中:
  4.   
        

    迁移到AddIndexToMemberships(20141110055825)     == AddIndexToMemberships:迁移==========================================

             

    - add_index(:memberships,:user_id)

             耙子流产了!     StandardError:发生错误,此以及所有后续迁移都已取消:

             

    表'成员资格'上的索引名称'index_memberships_on_user_id'已存在/ app / vendor / bundle / ruby​​ / 2.0.0 / gems / activerecord-4.0.2 / lib / active_record / connection_adapters / abstract / schema_statements.rb:815:在`add_index_options'

    中   

    虽然我必须让App#1运行一段时间,但从现在开始我将主要维护App#2。在这种情况下,解决此问题的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

如果两次迁移将索引添加到同一个表,则可以将第二个应用程序的迁移名称更改为与第一个名称具有相同的时间戳。