首页 > 解决方案 > Rails 无法执行 db:migrate,数据库被锁定并且没有模式迁移表

问题描述

所以几周前我玩了rails,然后我昨天回来尝试了更多的东西,tada,没有任何效果。出于某种原因,我不断收到这个问题。

我已经尝试了我能想到的一切:

在这一点上,我感到非常沮丧和悲伤,因为我正处于放弃轨道的边缘,我只是找不到解决方案。

我的设置是我在运行 ubuntu 的笔记本电脑上访问的共享驱动器中有一台带有我的 rails 应用程序的 Windows PC。我认为这里可能有问题,但是当我运行服务器时,它工作得很好,我可以创建控制器和视图并在 chrome 中使用它们,但是与数据库有关的任何事情都绝对是 f***ed我不明白为什么会如此。
这是我运行 db:migrate --trace 时得到的堆栈跟踪:


rake db:migrate --trace
** Invoke db:migrate (first_time)
** Invoke db:load_config (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:load_config
** Execute db:migrate
rake aborted!
ActiveRecord::StatementInvalid: SQLite3::BusyException: database is locked: CREATE TABLE "schema_migrations" ("version" varchar NOT NULL PRIMARY KEY)
/home/kalin/.rvm/gems/ruby-2.5.1/gems/sqlite3-1.3.13/lib/sqlite3/statement.rb:108:in 'step'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/sqlite3-1.3.13/lib/sqlite3/statement.rb:108:in 'block in each'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/sqlite3-1.3.13/lib/sqlite3/statement.rb:107:in 'loop'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/sqlite3-1.3.13/lib/sqlite3/statement.rb:107:in 'each'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/sqlite3-1.3.13/lib/sqlite3/database.rb:152:in 'map'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/sqlite3-1.3.13/lib/sqlite3/database.rb:152:in 'block in execute'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/sqlite3-1.3.13/lib/sqlite3/database.rb:95:in 'prepare'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/sqlite3-1.3.13/lib/sqlite3/database.rb:137:in 'execute'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/activerecord-5.2.1/lib/active_record/connection_adapters/sqlite3_adapter.rb:255:in 'block (2 levels) in execute'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/activesupport-5.2.1/lib/active_support/dependencies/interlock.rb:48:in 'block in permit_concurrent_loads'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/activesupport-5.2.1/lib/active_support/concurrency/share_lock.rb:187:in 'yield_shares'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/activesupport-5.2.1/lib/active_support/dependencies/interlock.rb:47:in 'permit_concurrent_loads'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/activerecord-5.2.1/lib/active_record/connection_adapters/sqlite3_adapter.rb:254:in 'block in execute'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/activerecord-5.2.1/lib/active_record/connection_adapters/abstract_adapter.rb:579:in 'block (2 levels) in log'
/home/kalin/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/monitor.rb:226:in 'mon_synchronize'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/activerecord-5.2.1/lib/active_record/connection_adapters/abstract_adapter.rb:578:in 'block in log'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/activesupport-5.2.1/lib/active_support/notifications/instrumenter.rb:23:in 'instrument'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/activerecord-5.2.1/lib/active_record/connection_adapters/abstract_adapter.rb:569:in 'log'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/activerecord-5.2.1/lib/active_record/connection_adapters/sqlite3_adapter.rb:253:in 'execute'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/activerecord-5.2.1/lib/active_record/connection_adapters/abstract/schema_statements.rb:311:in 'create_table'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/activerecord-5.2.1/lib/active_record/schema_migration.rb:29:in 'create_table'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/activerecord-5.2.1/lib/active_record/migration.rb:1187:in 'initialize'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/activerecord-5.2.1/lib/active_record/migration.rb:1036:in 'new'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/activerecord-5.2.1/lib/active_record/migration.rb:1036:in 'up'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/activerecord-5.2.1/lib/active_record/migration.rb:1011:in 'migrate'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/activerecord-5.2.1/lib/active_record/tasks/database_tasks.rb:172:in 'migrate'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/activerecord-5.2.1/lib/active_record/railties/databases.rake:60:in 'block (2 levels) in <main>'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/rake-12.3.1/lib/rake/task.rb:271:in 'block in execute'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/rake-12.3.1/lib/rake/task.rb:271:in 'each'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/rake-12.3.1/lib/rake/task.rb:271:in 'execute'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/rake-12.3.1/lib/rake/task.rb:213:in 'block in invoke_with_call_chain'
/home/kalin/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/monitor.rb:226:in 'mon_synchronize'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/rake-12.3.1/lib/rake/task.rb:193:in 'invoke_with_call_chain'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/rake-12.3.1/lib/rake/task.rb:182:in 'invoke'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/rake-12.3.1/lib/rake/application.rb:160:in 'invoke_task'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/rake-12.3.1/lib/rake/application.rb:116:in 'block (2 levels) in top_level'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/rake-12.3.1/lib/rake/application.rb:116:in 'each'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/rake-12.3.1/lib/rake/application.rb:116:in 'block in top_level'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/rake-12.3.1/lib/rake/application.rb:125:in 'run_with_threads'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/rake-12.3.1/lib/rake/application.rb:110:in 'top_level'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/rake-12.3.1/lib/rake/application.rb:83:in 'block in run'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/rake-12.3.1/lib/rake/application.rb:186:in 'standard_exception_handling'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/rake-12.3.1/lib/rake/application.rb:80:in 'run'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/rake-12.3.1/exe/rake:27:in '<top (required)>'
/home/kalin/.rvm/gems/ruby-2.5.1/bin/rake:23:in 'load'
/home/kalin/.rvm/gems/ruby-2.5.1/bin/rake:23:in '<main>'
/home/kalin/.rvm/gems/ruby-2.5.1/bin/ruby_executable_hooks:15:in 'eval'
/home/kalin/.rvm/gems/ruby-2.5.1/bin/ruby_executable_hooks:15:in '<main>'

Caused by:
SQLite3::BusyException: database is locked
/home/kalin/.rvm/gems/ruby-2.5.1/gems/sqlite3-1.3.13/lib/sqlite3/statement.rb:108:in 'step'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/sqlite3-1.3.13/lib/sqlite3/statement.rb:108:in 'block in each'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/sqlite3-1.3.13/lib/sqlite3/statement.rb:107:in 'loop'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/sqlite3-1.3.13/lib/sqlite3/statement.rb:107:in 'each'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/sqlite3-1.3.13/lib/sqlite3/database.rb:152:in 'map'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/sqlite3-1.3.13/lib/sqlite3/database.rb:152:in 'block in execute'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/sqlite3-1.3.13/lib/sqlite3/database.rb:95:in 'prepare'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/sqlite3-1.3.13/lib/sqlite3/database.rb:137:in 'execute'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/activerecord-5.2.1/lib/active_record/connection_adapters/sqlite3_adapter.rb:255:in 'block (2 levels) in execute'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/activesupport-5.2.1/lib/active_support/dependencies/interlock.rb:48:in 'block in permit_concurrent_loads'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/activesupport-5.2.1/lib/active_support/concurrency/share_lock.rb:187:in 'yield_shares'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/activesupport-5.2.1/lib/active_support/dependencies/interlock.rb:47:in 'permit_concurrent_loads'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/activerecord-5.2.1/lib/active_record/connection_adapters/sqlite3_adapter.rb:254:in 'block in execute'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/activerecord-5.2.1/lib/active_record/connection_adapters/abstract_adapter.rb:579:in 'block (2 levels) in log'
/home/kalin/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/monitor.rb:226:in 'mon_synchronize'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/activerecord-5.2.1/lib/active_record/connection_adapters/abstract_adapter.rb:578:in 'block in log'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/activesupport-5.2.1/lib/active_support/notifications/instrumenter.rb:23:in 'instrument'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/activerecord-5.2.1/lib/active_record/connection_adapters/abstract_adapter.rb:569:in 'log'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/activerecord-5.2.1/lib/active_record/connection_adapters/sqlite3_adapter.rb:253:in 'execute'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/activerecord-5.2.1/lib/active_record/connection_adapters/abstract/schema_statements.rb:311:in 'create_table'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/activerecord-5.2.1/lib/active_record/schema_migration.rb:29:in 'create_table'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/activerecord-5.2.1/lib/active_record/migration.rb:1187:in 'initialize'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/activerecord-5.2.1/lib/active_record/migration.rb:1036:in 'new'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/activerecord-5.2.1/lib/active_record/migration.rb:1036:in 'up'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/activerecord-5.2.1/lib/active_record/migration.rb:1011:in 'migrate'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/activerecord-5.2.1/lib/active_record/tasks/database_tasks.rb:172:in 'migrate'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/activerecord-5.2.1/lib/active_record/railties/databases.rake:60:in 'block (2 levels) in <main>'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/rake-12.3.1/lib/rake/task.rb:271:in 'block in execute'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/rake-12.3.1/lib/rake/task.rb:271:in 'each'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/rake-12.3.1/lib/rake/task.rb:271:in 'execute'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/rake-12.3.1/lib/rake/task.rb:213:in 'block in invoke_with_call_chain'
/home/kalin/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/monitor.rb:226:in 'mon_synchronize'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/rake-12.3.1/lib/rake/task.rb:193:in 'invoke_with_call_chain'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/rake-12.3.1/lib/rake/task.rb:182:in 'invoke'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/rake-12.3.1/lib/rake/application.rb:160:in 'invoke_task'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/rake-12.3.1/lib/rake/application.rb:116:in 'block (2 levels) in top_level'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/rake-12.3.1/lib/rake/application.rb:116:in 'each'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/rake-12.3.1/lib/rake/application.rb:116:in 'block in top_level'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/rake-12.3.1/lib/rake/application.rb:125:in 'run_with_threads'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/rake-12.3.1/lib/rake/application.rb:110:in 'top_level'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/rake-12.3.1/lib/rake/application.rb:83:in 'block in run'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/rake-12.3.1/lib/rake/application.rb:186:in 'standard_exception_handling'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/rake-12.3.1/lib/rake/application.rb:80:in 'run'
/home/kalin/.rvm/gems/ruby-2.5.1/gems/rake-12.3.1/exe/rake:27:in '<top (required)>'
/home/kalin/.rvm/gems/ruby-2.5.1/bin/rake:23:in 'load'
/home/kalin/.rvm/gems/ruby-2.5.1/bin/rake:23:in '<main>'
/home/kalin/.rvm/gems/ruby-2.5.1/bin/ruby_executable_hooks:15:in 'eval'
/home/kalin/.rvm/gems/ruby-2.5.1/bin/ruby_executable_hooks:15:in '<main>'
Tasks: TOP => db:migrate

标签: ruby-on-railsrubysqliterakedatabase-schema

解决方案


推荐阅读