繁体   English   中英

“ActiveRecord::PendingMigrationError 迁移正在挂起”错误是什么意思?

[英]What does the 'ActiveRecord::PendingMigrationError Migrations are pending' error mean?

我收到此错误:

ActiveRecord::PendingMigrationError 迁移正在挂起。 要解决此问题,请运行: bin/rake db:migrate RAILS_ENV=development

提取的源(围绕第 392 行):390 391 def check_pending!(connection = Base.connection) 392 引发 ActiveRecord::PendingMigrationError 如果 ActiveRecord::Migrator.needs_migration?(connection) 393 end 394 395 def load_schema_if_pending!

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

应用程序跟踪 | 框架跟踪 | 完整跟踪 activerecord (4.2.5) lib/active_record/migration.rb:392:in check_pending!' activerecord (4.2.5) lib/active_record/migration.rb:373:in check_pending!' activerecord (4.2.5) lib/active_record/migration.rb:373:in call' actionpack (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 'activesupport (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:in call' 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:in call' web-console (2.2.1) lib/web_console/middleware.rb:39 :in call' actionpack (4.2.5) lib/action_dispatch/middleware/show_exceptions.rb:30:in call' railties (4.2.5) lib/rails/rack/logger.rb:38:in call_app' railties (4.2.5) lib/rails/rack/logger.rb:20:in block 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:in call' actionpack (4.2.5) lib/action_dispatch/middleware/request_id.rb:21:in call' rack (1.6.4) lib/rack/methodoverride.rb:22:in call' rack (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'rack (1.6.4) lib/rack/lock.rb:17:in call' actionpack (4.2.5) lib/action_dispatch/middleware/static.rb:116:in (1.6.4) lib/ rack/sendfile.rb:113:in call' railties (4.2.5) lib/rails/engine.rb:518:in call' railties (4.2.5) lib/rails/application.rb:165:in call' rack (1.6.4) lib/rack/lock.rb:17:in (1.6.4) lib/rack/content_length.rb:15:in call' rack (1.6.4) lib/rack/lock.rb:17:in call' rack (1.6.4) lib/rack/handler/webrick.rb:88:in service' /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'

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

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

bundle exec rake db:migrate 这会给我们解决方案

rake db:migrate命令将为尚未运行的当前环境运行迁移。 如果您使用的是开发环境,则无需指定任何 env 。 从下面的命令中,您可以运行所有尚未运行的挂起迁移

对于 Rails 版本 > 5

rails db:migrate

对于 Rails 版本 < 5

rake db:migrate

额外的东西

如果您想检查哪些迁移正在运行,哪些正在挂起,您可以使用 bolow 命令

rails db:migrate:status

如果所有的解决方案都不适合你杀死你的 rails 服务器并重新启动它,这对我有用,因为我运行rails db:migrate:status并发现没有挂起的迁移

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM