![](/img/trans.png)
[英]ActiveRecord::PendingMigrationError Migrations are pending
[英]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:inblock 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:incall' 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:incall' 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 :incall' actionpack (4.2.5) lib/action_dispatch/middleware/show_exceptions.rb:30:in
call' railties (4.2.5) lib/rails/rack/logger.rb:38:incall_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:inblock 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:intagged' railties (4.2.5) lib/rails/rack/logger.rb:20:in
call' actionpack (4.2.5) lib/action_dispatch/middleware/request_id.rb:21:incall' rack (1.6.4) lib/rack/methodoverride.rb:22:in
call' rack (1.6.4) lib/rack/runtime.rb:18:incall' 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:incall' actionpack (4.2.5) lib/action_dispatch/middleware/static.rb:116:in
(1.6.4) lib/ rack/sendfile.rb:113:incall' railties (4.2.5) lib/rails/engine.rb:518:in
call' railties (4.2.5) lib/rails/application.rb:165:incall' rack (1.6.4) lib/rack/lock.rb:17:in
(1.6.4) lib/rack/content_length.rb:15:incall' 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:inservice' /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.