获得:“迁移正在等待; 运行’bin / rake db:migrate RAILS_ENV = development’来解决此问题。“克隆并迁移项目后

我克隆了我的项目。 捆绑“捆绑安装”,然后运行“rake db:migrate”。 我收到此错误:(当我运行rails服务器并将我的浏览器打开到localhost:3000时)“迁移正在等待;运行’bin / rake db:migrate RAILS_ENV = development’以解决此问题。”

我逐个检查了所有迁移,并且所有迁移都没有错误地执行。 执行“rake db:migrate”后也没有显示错误。

这是我执行“ rake db:migrate:status ”时看到的内容

我在开发环境。 如果您需要任何其他信息,请告诉我。

我还尝试了“捆绑exec rake db:migrate”,并将“捆绑exec rake db:migrate:reset”改为“burninggramma”建议。

什么导致错误的线索?

有趣。 你有没有运行rake db:create ? 假设您使用的是sqlite3,请执行以下操作:

  rm -f db/*.sqlite3 rake db:create RAILS_ENV=development rake db:migrate rails s -e development 

另外,你能列出config / database.yml文件的内容吗?

编辑: 警告! 显然,您将丢失现有数据。

运行migrate命令后,我仍然遇到了同样的错误。

对我有用的是停止rails服务器并再次启动它。

使用rake db:migrate:status列出已执行的迁移,并查看是否已执行每个迁移。 您可以尝试使用rake db:abort_if_pending_migrations取消迁移,并尝试再次迁移。

运行rake db:migrate RAILS_ENV=test为我做了

1.也许它在ruby2 / rails4中是默认的,但你试过了吗: bundle exec rake db:migrate

2.另一种选择是重置整个数据库 – 小心使用! 重置所有数据bundle exec rake db:migrate:reset

+)我只是确保你在同一个开发环境中执行所有操作:

 RAILS_ENV=development bundle exec rake db:migrate:reset RAILS_ENV=development bundle exec rails s 

我在浏览器中遇到了同样的错误,但仔细查看错误消息后,我注意到我在迁移注释和发布文件中有一些额外的空白区域。 一旦我删除它,它完美地工作。

这对我有用:-gem install rails -v 4.1.0 Inside Gemfile:-gem’rail’,’4.1.0’(用这个替换new / old)做bundle install and update -bundle install -bundle update In你的application.rb:删除/评论 – config.active_record.raise_in_transactional_callbacks = true

运行bundle rake:-bundle exec rake db:migrate刷新页面,错误应该消失了。

‘db:migrate:reset’的两个原因对我不起作用

 1) loosing data 2) we moved from php to rails, so we had an existing DB and the migrations were written on top of it not from the scratch 

所以我尝试更新’scheema_migrations’(mysql)表,其中包含我确实已经在我的db(开发)上运行的迁移列表(只是版本值),这可能是耗时的过程,但它可以工作。 我不打算在生产上尝试这个。

错误是你正在创建一个已经存在的表,我以前遇到过这个问题。 第1步查看dv:migrate时的错误

步骤2转到创建此表的模型

步骤3在create_table之前添加drop_table:[YOUR TABLE]:[YOUR TABLE]

第2步运行rake db:migrate

完成迁移后, 步骤3删除drop_table

打开数据库,然后单击schema_migration表。 迁移将列出如下。 在此处输入图像描述

对版本列进行排序,找到要返回的最新迁移。 删除或插入新的。 Rails会在此表中保留所有迁移历史记录,因此您可以根据自己的喜好调整迁移历史记录。

我遇到了这个问题,因为我的rails文件位于名为“[rails]”的文件夹中。 似乎rake不喜欢文件夹名称中使用的以下符号“[]”。

希望这有助于其他人解决这个问题。

我在学习足够危险的 Rails教程中遇到了同样的错误。 我在Windows 10机器上使用Git Bash终端。 在我尝试使用命令(在另一个终端中)迁移我的数据库后,错误出现在我正在运行的终端中:

$ bundle exec rake db: migrate:

在尝试了@lewstherin提供的解决方案之后,我仍然遇到了同样的错误。 我试过这个命令:

$ rails test得到了明确而有用的警告:

Migrations are pending. To resolve this issue, run:

 bin/rails db:migrate RAILS_ENV=test 

我跑了命令:

$ bin/rails db:migrate RAILS_ENV=test

现在我又回来了。

您始终可以运行rake db:reset

当我执行rake test并遇到bug时:

“rake aborted!ActiveRecord :: PendingMigrationError:迁移正在等待。要解决此问题,请运行:bin / rake db:migrate RAILS_ENV = test”

我试过并成功了:

 rm -f db/*.sqlite3 rake db:create RAILS_ENV=development rake db:migrate rails s -e development