rake db:migrate RAILS_ENV =生产不起作用

时间:2017-04-23 16:15:04

标签: ruby-on-rails ruby-on-rails-4

我将我的本地文件上传到AWS,我做了rake db:migrate RAILS_ENV = production, 但它显示错误......它正在我当地的环境中工作,但它不能用于生产。

ActiveRecord::SchemaMigration Load (0.2ms)  SELECT `schema_migrations`.* FROM `schema_migrations`
Migrating to DeleteTagCategories (20170422082951)
== 20170422082951 DeleteTagCategories: migrating ==============================
-- drop_table(:tag_categories)
   (0.2ms)  DROP TABLE `tag_categories`
rake aborted!
StandardError: An error has occurred, all later migrations canceled:

Mysql2::Error: Unknown table 'tag_categories': DROP TABLE `tag_categories`

解决此错误的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

您应该知道db:schema:load将删除现有数据,因此如果您想要保留任何非种子数据,您可能不想在生产中运行它。

由于表(tag_categories)在被推送到生产之前被删除了,我只是手动删除了表而没有使用迁移。

所以基本上只删除删除tag_categories的迁移,因为此表只存在于本地计算机上。

在进行Rails开发时,我通常只编辑现有的迁移并尽可能进行手动更改,而不是为每次更改创建新的迁移。一旦我推向生产(或者如果与团队一起工作,那就是源代码控制),那么我将不再对现有迁移进行其他更改。这减少了不必要的迁移次数,这可以快速增加。