簡體   English   中英

ruby on rails rake db:migrate rake已中止

[英]ruby on rails rake db:migrate rake aborted

當運行rake db:migrate以下錯誤消息:

rake aborted!
ActiveRecord::StatementInvalid: SQLite3::ReadOnlyException: attempt to write a readonly database: CREATE TABLE "schema_migrations" ("version" varchar NOT NULL PRIMARY KEY)
/var/lib/gems/2.3.0/gems/sqlite3-1.3.13/lib/sqlite3/statement.rb:108:in `step'
/var/lib/gems/2.3.0/gems/sqlite3-1.3.13/lib/sqlite3/statement.rb:108:in `block in each'
/var/lib/gems/2.3.0/gems/sqlite3-1.3.13/lib/sqlite3/statement.rb:107:in `loop'
/var/lib/gems/2.3.0/gems/sqlite3-1.3.13/lib/sqlite3/statement.rb:107:in `each'
/var/lib/gems/2.3.0/gems/sqlite3-1.3.13/lib/sqlite3/database.rb:152:in `map'
/var/lib/gems/2.3.0/gems/sqlite3-1.3.13/lib/sqlite3/database.rb:152:in `block in execute'
/var/lib/gems/2.3.0/gems/sqlite3-1.3.13/lib/sqlite3/database.rb:95:in `prepare'
/var/lib/gems/2.3.0/gems/sqlite3-1.3.13/lib/sqlite3/database.rb:137:in `execute'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/connection_adapters/sqlite3_adapter.rb:255:in `block (2 levels) in execute'
/var/lib/gems/2.3.0/gems/activesupport-5.2.0/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
/var/lib/gems/2.3.0/gems/activesupport-5.2.0/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
/var/lib/gems/2.3.0/gems/activesupport-5.2.0/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/connection_adapters/sqlite3_adapter.rb:254:in `block in execute'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/connection_adapters/abstract_adapter.rb:579:in `block (2 levels) in log'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/connection_adapters/abstract_adapter.rb:578:in `block in log'
/var/lib/gems/2.3.0/gems/activesupport-5.2.0/lib/active_support/notifications/instrumenter.rb:23:in `instrument'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/connection_adapters/abstract_adapter.rb:569:in `log'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/connection_adapters/sqlite3_adapter.rb:253:in `execute'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/connection_adapters/abstract/schema_statements.rb:311:in `create_table'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/schema_migration.rb:29:in `create_table'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/migration.rb:1187:in `initialize'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/migration.rb:1036:in `new'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/migration.rb:1036:in `up'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/migration.rb:1011:in `migrate'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/tasks/database_tasks.rb:172:in `migrate'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/railties/databases.rake:60:in `block (2 levels) in <main>'
/var/lib/gems/2.3.0/gems/rake-12.3.1/exe/rake:27:in `<top (required)>'

Caused by:
SQLite3::ReadOnlyException: attempt to write a readonly database
/var/lib/gems/2.3.0/gems/sqlite3-1.3.13/lib/sqlite3/statement.rb:108:in `step'
/var/lib/gems/2.3.0/gems/sqlite3-1.3.13/lib/sqlite3/statement.rb:108:in `block in each'
/var/lib/gems/2.3.0/gems/sqlite3-1.3.13/lib/sqlite3/statement.rb:107:in `loop'
/var/lib/gems/2.3.0/gems/sqlite3-1.3.13/lib/sqlite3/statement.rb:107:in `each'
/var/lib/gems/2.3.0/gems/sqlite3-1.3.13/lib/sqlite3/database.rb:152:in `map'
/var/lib/gems/2.3.0/gems/sqlite3-1.3.13/lib/sqlite3/database.rb:152:in `block in execute'
/var/lib/gems/2.3.0/gems/sqlite3-1.3.13/lib/sqlite3/database.rb:95:in `prepare'
/var/lib/gems/2.3.0/gems/sqlite3-1.3.13/lib/sqlite3/database.rb:137:in `execute'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/connection_adapters/sqlite3_adapter.rb:255:in `block (2 levels) in execute'
/var/lib/gems/2.3.0/gems/activesupport-5.2.0/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
/var/lib/gems/2.3.0/gems/activesupport-5.2.0/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
/var/lib/gems/2.3.0/gems/activesupport-5.2.0/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/connection_adapters/sqlite3_adapter.rb:254:in `block in execute'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/connection_adapters/abstract_adapter.rb:579:in `block (2 levels) in log'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/connection_adapters/abstract_adapter.rb:578:in `block in log'
/var/lib/gems/2.3.0/gems/activesupport-5.2.0/lib/active_support/notifications/instrumenter.rb:23:in `instrument'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/connection_adapters/abstract_adapter.rb:569:in `log'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/connection_adapters/sqlite3_adapter.rb:253:in `execute'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/connection_adapters/abstract/schema_statements.rb:311:in `create_table'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/schema_migration.rb:29:in `create_table'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/migration.rb:1187:in `initialize'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/migration.rb:1036:in `new'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/migration.rb:1036:in `up'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/migration.rb:1011:in `migrate'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/tasks/database_tasks.rb:172:in `migrate'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/railties/databases.rake:60:in `block (2 levels) in <main>'
/var/lib/gems/2.3.0/gems/rake-12.3.1/exe/rake:27:in `<top (required)>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)

這是ls -l的結果:

total 72
drwxrwxrwx 10 root root 4096 Jun  3 14:23 app
drwxrwxrwx  2 root root 4096 Jun  3 14:24 bin
drwxrwxrwx  5 root root 4096 Jun  3 14:23 config
-rw-rw-rw-  1 root root  130 Jun  3 14:23 config.ru
drwxrwxrwx  3 root root 4096 Jun  3 23:47 db
-rw-rw-rw-  1 root root 2205 Jun  3 14:23 Gemfile
-rw-rw-rw-  1 root root 5295 Jun  3 14:24 Gemfile.lock
drwxrwxrwx  4 root root 4096 Jun  3 14:23 lib
drwxrwxrwx  2 root root 4096 Jun  3 14:28 log
-rw-rw-rw-  1 root root   66 Jun  3 14:23 package.json
drwxrwxrwx  2 root root 4096 Jun  3 14:23 public
-rw-rw-rw-  1 root root  227 Jun  3 14:23 Rakefile
-rw-rw-rw-  1 root root  374 Jun  3 14:23 README.md
drwxrwxrwx  2 root root 4096 Jun  3 14:23 storage
drwxrwxrwx  9 root root 4096 Jun  3 14:23 test
drwxrwxrwx  6 root root 4096 Jun  3 14:42 tmp
drwxrwxrwx  2 root root 4096 Jun  3 14:23 vendor

這是運行帶有--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::ReadOnlyException: attempt to write a readonly database: CREATE TABLE "schema_migrations" ("version" varchar NOT NULL PRIMARY KEY)
/var/lib/gems/2.3.0/gems/sqlite3-1.3.13/lib/sqlite3/statement.rb:108:in `step'
/var/lib/gems/2.3.0/gems/sqlite3-1.3.13/lib/sqlite3/statement.rb:108:in `block in each'
/var/lib/gems/2.3.0/gems/sqlite3-1.3.13/lib/sqlite3/statement.rb:107:in `loop'
/var/lib/gems/2.3.0/gems/sqlite3-1.3.13/lib/sqlite3/statement.rb:107:in `each'
/var/lib/gems/2.3.0/gems/sqlite3-1.3.13/lib/sqlite3/database.rb:152:in `map'
/var/lib/gems/2.3.0/gems/sqlite3-1.3.13/lib/sqlite3/database.rb:152:in `block in execute'
/var/lib/gems/2.3.0/gems/sqlite3-1.3.13/lib/sqlite3/database.rb:95:in `prepare'
/var/lib/gems/2.3.0/gems/sqlite3-1.3.13/lib/sqlite3/database.rb:137:in `execute'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/connection_adapters/sqlite3_adapter.rb:255:in `block (2 levels) in execute'
/var/lib/gems/2.3.0/gems/activesupport-5.2.0/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
/var/lib/gems/2.3.0/gems/activesupport-5.2.0/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
/var/lib/gems/2.3.0/gems/activesupport-5.2.0/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/connection_adapters/sqlite3_adapter.rb:254:in `block in execute'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/connection_adapters/abstract_adapter.rb:579:in `block (2 levels) in log'
/usr/lib/ruby/2.3.0/monitor.rb:214:in `mon_synchronize'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/connection_adapters/abstract_adapter.rb:578:in `block in log'
/var/lib/gems/2.3.0/gems/activesupport-5.2.0/lib/active_support/notifications/instrumenter.rb:23:in `instrument'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/connection_adapters/abstract_adapter.rb:569:in `log'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/connection_adapters/sqlite3_adapter.rb:253:in `execute'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/connection_adapters/abstract/schema_statements.rb:311:in `create_table'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/schema_migration.rb:29:in `create_table'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/migration.rb:1187:in `initialize'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/migration.rb:1036:in `new'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/migration.rb:1036:in `up'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/migration.rb:1011:in `migrate'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/tasks/database_tasks.rb:172:in `migrate'
/var/lib/gems/2.3.0/gems/activerecord-5.2.0/lib/active_record/railties/databases.rake:60:in `block (2 levels) in <main>'
/var/lib/gems/2.3.0/gems/rake-12.3.1/lib/rake/task.rb:271:in `block in execute'
/var/lib/gems/2.3.0/gems/rake-12.3.1/lib/rake/task.rb:271:in `each'
/var/lib/gems/2.3.0/gems/rake-12.3.1/lib/rake/task.rb:271:in `execute'
/var/lib/gems/2.3.0/gems/rake-12.3.1/lib/rake/task.rb:213:in `block in invoke_with_call_chain'
/usr/lib/ruby/2.3.0/monitor.rb:214:in `mon_synchronize'
/var/lib/gems/2.3.0/gems/rake-12.3.1/lib/rake/task.rb:193:in `invoke_with_call_chain'
/var/lib/gems/2.3.0/gems/rake-12.3.1/lib/rake/task.rb:182:in `invoke'
/var/lib/gems/2.3.0/gems/rake-12.3.1/lib/rake/application.rb:160:in `invoke_task'
/var/lib/gems/2.3.0/gems/rake-12.3.1/lib/rake/application.rb:116:in `block (2 levels) in top_level'
/var/lib/gems/2.3.0/gems/rake-12.3.1/lib/rake/application.rb:116:in `each'
/var/lib/gems/2.3.0/gems/rake-12.3.1/lib/rake/application.rb:116:in `block in top_level'
/var/lib/gems/2.3.0/gems/rake-12.3.1/lib/rake/application.rb:125:in `run_with_threads'
/var/lib/gems/2.3.0/gems/rake-12.3.1/lib/rake/application.rb:110:in `top_level'
/var/lib/gems/2.3.0/gems/rake-12.3.1/lib/rake/application.rb:83:in `block in run'
/var/lib/gems/2.3.0/gems/rake-12.3.1/lib/rake/application.rb:186:in `standard_exception_handling'
/var/lib/gems/2.3.0/gems/rake-12.3.1/lib/rake/application.rb:80:in `run'
/var/lib/gems/2.3.0/gems/rake-12.3.1/exe/rake:27:in `<top (required)>'
/usr/local/bin/rake:23:in `load'
/usr/local/bin/rake:23:in `<main>'

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

我的database.yml文件:

# SQLite version 3.x
#   gem install sqlite3
#
#   Ensure the SQLite 3 gem is defined in your Gemfile
#   gem 'sqlite3'
#
default: &default
  adapter: sqlite3
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  timeout: 5000

development:
  <<: *default
  database: db/development.sqlite3

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  <<: *default
  database: db/test.sqlite3

production:
  <<: *default
  database: db/production.sqlite3

再次使用代碼與文本的比率:

dfgdfghd fghdfg hdfghdgh dfghdfgh dfghdfghd fgghdfghdf hdghdfg hdfgghdf ghdfghdf hdfghdf ghdfghd fghdf ghdfgħdfghdfgħdfgh dfgh dghdfgf hdfgh fgdfgfhdfg hdfgh fghdf ghdfg dfghd fhdf ghdf hdfg hdghdf ghdfgh dghdfgh dfgndfn fgndf gndfgn dfgfn DF ndfg NDG ndfg DGÑDFGÑdfgndfgndf gndfg ndfgnfg HDF ghdfh gfndfgh dfghdf gdfgh dfgh hdfh dfghdf ghdfg hfg hdfg hdf g

ls -l在db目錄中的輸出:

total 8
-rw-r--r-- 1 root root    0 Jun  3 14:42 development.sqlite3
drwxrwxr-x 2 jack jack 4096 Jun  3 23:47 migrate
-rw-rw-rw- 1 root root  370 Jun  3 14:23 seeds.rb

您的數據庫由root擁有,只有root具有寫訪問權限。 我敢打賭,您正在以jack用戶身份運行您的應用,因此您沒有寫權限。

您是否使用sudo命令創建了這個倉庫? (sudo rails new或其他)。 您的整個應用程序由root擁有。

cd [your app's main directory]
chown -R jack:jack .

確保包含數據庫文件的目錄對於執行CGI腳本的用戶也是可寫的

參考:將SQLite數據庫模式更改為可讀寫

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM