【问题标题】:What does the 'ActiveRecord::PendingMigrationError Migrations are pending' error mean?'ActiveRecord::PendingMigrationError Migrations are pending' 错误是什么意思?
【发布时间】:2016-04-24 08:46:12
【问题描述】:

我收到此错误:

ActiveRecord::PendingMigrationError 迁移正在等待。解决 这个问题,运行:bin/rake db:migrate RAILS_ENV=development

提取的源代码(在 #392 行附近):390 391 def check_pending!(连接 = Base.connection)392 提高 ActiveRecord::PendingMigrationError 如果 ActiveRecord::Migrator.needs_migration?(connection) 393 end 394 第395章

Rails.root:/Users/checkkdahustle/Desktop/Full Sail/25。先进的 服务器端语言/ASL/APP_2/Project2/ShoeDeals

应用程序跟踪 |框架跟踪 |完整跟踪活动记录 (4.2.5) lib/active_record/migration.rb:392:in check_pending!' activerecord (4.2.5) lib/active_record/migration.rb:373:incall' 动作包 (4.2.5) lib/action_dispatch/middleware/callbacks.rb:29:in block in call' activesupport (4.2.5) lib/active_support/callbacks.rb:88:in run_callbacks' 主动支持 (4.2.5) lib/active_support/callbacks.rb:778:in _run_call_callbacks' activesupport (4.2.5) lib/active_support/callbacks.rb:81:in run_callbacks' actionpack (4.2.5) lib/action_dispatch/middleware/callbacks.rb:27:in call' actionpack (4.2.5) lib/action_dispatch/middleware/reloader.rb:73:incall' actionpack (4.2.5) lib/action_dispatch/middleware/remote_ip.rb:78:in call' actionpack (4.2.5) lib/action_dispatch/middleware/debug_exceptions.rb:17:incall' 网络控制台 (2.2.1) lib/web_console/middleware.rb:39:in call' actionpack (4.2.5) lib/action_dispatch/middleware/show_exceptions.rb:30:incall' railties (4.2.5) lib/rails/rack/logger.rb:38:in call_app' railties (4.2.5) lib/rails/rack/logger.rb:20:inblock in call' activesupport (4.2.5) lib/active_support/tagged_logging.rb:68:in block in tagged' activesupport (4.2.5) lib/active_support/tagged_logging.rb:26:in tagged' activesupport (4.2.5) lib/active_support/tagged_logging.rb:68:in tagged' railties (4.2.5) lib/rails/rack/logger.rb:20:incall' actionpack (4.2.5) lib/action_dispatch/middleware/request_id.rb:21:in call' rack (1.6.4) lib/rack/methodoverride.rb:22:incall' 机架 (1.6.4) lib/rack/runtime.rb:18:in call' activesupport (4.2.5) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in call' 机架 (1.6.4) lib/rack/lock.rb:17:in call' actionpack (4.2.5) lib/action_dispatch/middleware/static.rb:116:incall' 机架 (1.6.4) lib/rack/sendfile.rb:113:in call' railties (4.2.5) lib/rails/engine.rb:518:incall' railties (4.2.5) lib/rails/application.rb:165:in call' rack (1.6.4) lib/rack/lock.rb:17:incall' 机架 (1.6.4) lib/rack/content_length.rb:15:in call' rack (1.6.4) lib/rack/handler/webrick.rb:88:inservice' /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/webrick/httpserver.rb:138:in service' /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/webrick/httpserver.rb:94:in run' /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/webrick/server.rb:295:in `block in start_thread'

【问题讨论】:

  • 您是否尝试过它告诉您的操作? bin/rake db:migrate RAILS_ENV=development
  • 我刚刚运行了@dwenzel 建议的行,然后弹出:NoMethodError in Shoe#index……我现在正在查看我的代码
  • 我建议将此信息添加到您的问题中,包括完整的新错误。当您在 Stack Overflow 中提出问题时,提供尽可能多的信息总是好的;而不是在没有上下文的情况下粘贴完整的错误和堆栈跟踪。
  • 好吧,我不这样做。谢谢@dwenzel

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


【解决方案1】:

查看您发布的跟踪的第一行:

ActiveRecord::PendingMigrationError Migrations are pending. To resolve this issue, run: bin/rake db:migrate RAILS_ENV=development

就是这个意思:

正在等待迁移

因此,您有一些尚未运行的迁移,这意味着您的架构不是最新的。

要修复它,您所要做的就是运行待处理的迁移

bundle exec rake db:migrate

如果您已经创建了数据库并且它以前可以工作。如果这是您机器上的新应用程序,则数据库尚不存在。您必须先创建一个数据库,然后按如下方式运行迁移:

bundle exec rake db:create db:migrate

【讨论】:

  • 我的数据库运行良好。我刚刚运行了@dwenzel 建议的行,然后弹出:NoMethodError in Shoe#index...... 'bundle exec rake db:migrate' 将是此时的答案吗?
  • NoMethodError... 从您的错误跟踪中指向哪个方法?
  • 它指向我的 index.html.erb 但我没有看到问题。这是它显示的确切行:
  • app/views/shoe/index.html.erb:13:in `_app_views_shoe_index_html_erb___4223921823397208640_70151805921720'
  • 嗯...有趣。你能在你的控制器中显示index 方法吗?
【解决方案2】:

bundle exec rake db:migrate 这将为我们提供解决方案

【讨论】:

    【解决方案3】:

    rake db:migrate 命令将为尚未运行的当前环境运行迁移。如果您在开发环境中,则不需要指定任何 env 。从下面的命令中,您可以运行所有尚未运行的待处理迁移

    适用于 Rails 版本 > 5

    rails db:migrate
    

    适用于 Rails 版本

    rake db:migrate
    

    额外的东西

    如果你想检查哪些迁移正在运行,哪些正在等待,你可以使用 bolow 命令

    rails db:migrate:status
    

    【讨论】:

    • rails db:migrate:status 的好电话,对我找出哪个迁移不同步很有用
    【解决方案4】:

    如果所有解决方案都对您不起作用,请终止您的 Rails 服务器并重新启动它,这对我有用,因为我运行 rails db:migrate:status 并发现没有待处理的迁移

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 2013-07-26
      • 1970-01-01
      • 2014-09-28
      • 2015-03-04
      • 2012-11-26
      • 2018-05-25
      相关资源
      最近更新 更多