获取:“迁移待定;运行 'bin/rake db:migrate RAILS_ENV=development' 来解决此问题。”克隆和迁移项目后

Posted

技术标签:

【中文标题】获取:“迁移待定;运行 \'bin/rake db:migrate RAILS_ENV=development\' 来解决此问题。”克隆和迁移项目后【英文标题】:Getting: "Migrations are pending; run 'bin/rake db:migrate RAILS_ENV=development' to resolve this issue." after cloning and migrating the project获取:“迁移待定;运行 'bin/rake db:migrate RAILS_ENV=development' 来解决此问题。”克隆和迁移项目后 【发布时间】:2014-02-14 02:28:23 【问题描述】:

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

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

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

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

我还尝试了“bundle exec rake db:migrate”和“bundle exec rake db:migrate:reset”作为“burninggramma”的建议。

有什么线索会导致错误吗?

【问题讨论】:

请向我们展示rake db:migrate:status 的输出。是否已迁移所有迁移脚本? 你在第一部分写:, then run "rake db:migrate". I am getting this error: 。但是你也写了:Also no errors were shown after the execution of "rake db:migrate".那么这些错误是什么时候出现的? @burninggramma 哦,对不起。当我运行服务器并在浏览器上打开 localhost:3000 时 【参考方案1】:

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

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

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

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

【讨论】:

好吧,很奇怪。现在它工作正常。我认为 db:create 是关键,但不知道为什么会这样...... @stefanos-ioannou rake db:create 如果数据库不存在则创建它。在不创建数据库的情况下运行 migrate 应该会引发错误。不知道这里发生了什么。回想起来,我可能会尝试 rake db:migrate VERSION=0; rake db:migrate 看看有没有错误。【参考方案2】:

运行迁移命令后,我仍然有同样的错误。

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

【讨论】:

也为我工作 和我一样。我忘了我在我的 Gemfile 中添加了 gem 'mysql2',这很有意义,重新启动会修复它。【参考方案3】:

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

【讨论】:

在这里查看状态:evernote.com/shard/s238/sh/c6b9371c-2fd0-41b8-9d3d-038c2676bb31/… 我还使用了 abort_if_pending 并再次 rake(在删除everyhting 之后)。依然没有。没有显示错误【参考方案4】:

1. 可能是 ruby​​2/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

【讨论】:

bundle exec rake db:migrate:reset 为我工作,谢谢【参考方案5】:

Running rake db:migrate RAILS_ENV=test 为我做的

【讨论】:

【参考方案6】:

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

【讨论】:

【参考方案7】:

打开数据库并单击 schema_migration 表。迁移将列出如下。

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

【讨论】:

【参考方案8】:

我在Learn Enough to Be Dangerous 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

现在我又开始工作了。

【讨论】:

【参考方案9】:

对我来说,我只需要迁移错误:

rake db:migrate --trace

通过在development.rb 中将false 设置为config.active_record.migration_error 可能会使其可行,但我不推荐它。

【讨论】:

【参考方案10】:

这对我有用: -gem 安装导轨 -v 4.1.0 Gemfile 内部: -gem 'rails', '4.1.0' (用这个替换新的/旧的) 做捆绑安装和更新 -捆绑安装 - 捆绑更新 在您的 application.rb 中: 删除/评论 - config.active_record.raise_in_transactional_callbacks = true

运行捆绑耙: -bundle exec rake db:迁移 刷新您的页面,错误应该消失了。

【讨论】:

【参考方案11】:

'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) 表,这可能是一个耗时的过程但它有效。不过,我不会在生产中尝试这个。

【讨论】:

【参考方案12】:

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

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

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

第 2 步 运行 rake db:migrate

第 3 步 迁移完成后删除 drop_table

【讨论】:

【参考方案13】:

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

希望这可以帮助其他人解决这个问题。

【讨论】:

【参考方案14】:

我在 genieacs 中遇到了同样的问题,这段代码有帮助:

rake db:drop rake db:create rake db:schema:load RAILS_ENV=development
rake db:migrate rails s -e development

【讨论】:

【参考方案15】:

你总是可以运行 rake db:reset

【讨论】:

这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时评论自己的帖子,一旦您有足够的reputation,您就可以comment on any post。 - From Review @RyanGates 这怎么不试图提供答案?可能完全错误,but that doesn't mean we should delete it.审稿时请注意。 @Undo 这个答案让我觉得更像是一个评论,因为它听起来像是“试试这个”的评论。我明白你说这是一个真正的答案是什么意思,谢谢你把我链接到那个帖子。

以上是关于获取:“迁移待定;运行 'bin/rake db:migrate RAILS_ENV=development' 来解决此问题。”克隆和迁移项目后的主要内容,如果未能解决你的问题,请参考以下文章

iOS ---------- 获取设备的各种信息

java反射获取属性值

Shell 获取路径

iOS 获取文件大小

根据日期字符串获取星期几,日期获取星期,时间获取星期,js获取星期

js如何获取时间点?