Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 Heroku rake中止-如何清理我的迁移文件?_Ruby On Rails 4_Heroku_Rake - Fatal编程技术网

Ruby on rails 4 Heroku rake中止-如何清理我的迁移文件?

Ruby on rails 4 Heroku rake中止-如何清理我的迁移文件?,ruby-on-rails-4,heroku,rake,Ruby On Rails 4,Heroku,Rake,我正在开发一个Rails应用程序。它在本地运行得很好,但是在将它推到Heroku并运行Heroku run rake db:migrate之后,rake会在删除tabel:subscriptions中的:product的外键时被取消。 我知道我不配为那些移民获得奖章;但它在我的本地版本上仍然有效 我不知道如何解决这个问题,可能是在一些迁移文件中添加了一些方法,因为这是我的第一个Rails项目 以下是日志文件中提到的一些迁移文件,包括20150929194006 20150926163647_创建

我正在开发一个Rails应用程序。它在本地运行得很好,但是在将它推到Heroku并运行Heroku run rake db:migrate之后,rake会在删除tabel:subscriptions中的:product的外键时被取消。 我知道我不配为那些移民获得奖章;但它在我的本地版本上仍然有效

我不知道如何解决这个问题,可能是在一些迁移文件中添加了一些方法,因为这是我的第一个Rails项目

以下是日志文件中提到的一些迁移文件,包括20150929194006

20150926163647_创建_订阅:


有什么办法可以解决这个问题吗?

我能解决它。PostGres处理迁移文件的方式似乎与本地sqlite解决方案不同。有一些不必要的迁移文件添加了外键,这些外键稍后将被删除

通过删除这两个不必要的文件,提交更改git commit-m,然后运行git push heroku master,然后运行heroku rake db:migrate,一切都会顺利运行

class CreateSubscriptions < ActiveRecord::Migration
def change
create_table :subscriptions do |t|
  t.references :project, index: true
  t.references :user, index: true

  t.timestamps null: false
end
add_foreign_key :subscriptions, :projects
add_foreign_key :subscriptions, :users

add_index :subscriptions, [:project_id, :user_id], :unique => true
end
end
class AddFieldToSubscriptions < ActiveRecord::Migration
def change
add_reference :subscriptions, :product
add_foreign_key :subscriptions, :products
end
end
class RemoveProductFromSubscriptions < ActiveRecord::Migration
def change
remove_reference :subscriptions, :product, index: true
remove_foreign_key :subscriptions, :products
end
end
class AddProductToSubscriptions < ActiveRecord::Migration
def change
add_reference :subscriptions, :product
add_foreign_key :subscriptions, :products
add_index :subscriptions, :product_id, :unique => true
end
end
class RemoveIndexFromSubscriptions < ActiveRecord::Migration
def change
remove_index :subscriptions, :product_id
add_index :subscriptions, [:product_id, :user_id], unique: true
end
end
Running rake db:migrate on murmuring-cove-7571... up, run.2130
  ActiveRecord::SchemaMigration Load (1.9ms)  SELECT "schema_migrations".* FROM "schema_migrations"
Migrating to RemoveProductFromSubscriptions (20150929194006)
   (1.8ms)  BEGIN
== 20150929194006 RemoveProductFromSubscriptions: migrating ===================
-- remove_reference(:subscriptions, :product, {:index=>true})
   (4.9ms)  ALTER TABLE "subscriptions" DROP "product_id"
   -> 0.0052s
-- remove_foreign_key(:subscriptions, :products)
   (5.5ms)  SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
FROM pg_constraint c
JOIN pg_class t1 ON c.conrelid = t1.oid
JOIN pg_class t2 ON c.confrelid = t2.oid
JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
JOIN pg_namespace t3 ON c.connamespace = t3.oid
WHERE c.contype = 'f'
  AND t1.relname = 'subscriptions'
  AND t3.nspname = ANY (current_schemas(false))
ORDER BY c.conname

   (1.7ms)  ROLLBACK
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:
Table 'subscriptions' has no foreign key on column 'product_id'/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.0/lib/active_record/connection_adapters/abstract/schema_statements.rb:756:in `block in remove_foreign_key'