我正在尝试在this教程之后将应用部署到EC2。当我运行rake db:migrate时,我收到此错误:
rake aborted!
ActiveRecord::StatementInvalid: SQLite3::ReadOnlyException: attempt to write a readonly database: CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL)
运行 ls -l </ strong>
时total 16
-rw-r--r-- 1 root root 0 Apr 16 03:55 development.sqlite3
drwxrwxr-x 2 ubuntu ubuntu 4096 Apr 16 03:48 migrate
-rw-rw-r-- 1 ubuntu ubuntu 5989 Apr 16 03:48 schema.rb
-rw-rw-r-- 1 ubuntu ubuntu 345 Apr 16 03:48 seeds.rb
-rw-r--r-- 1 ubuntu ubuntu 0 Apr 16 12:28 test.sqlite3
答案 0 :(得分:3)
如果您在服务器上以开发模式运行(通常不是您想要做的,但对学习有用),则需要修改sqlite数据库的权限。所以,如果您在EC2上运行ubuntu AMI(我认为您是),请运行sudo chown ubuntu:ubuntu development.sqlite3
和sudo chown ubuntu:ubuntu test.sqlite3
。
这会将拥有该文件(chown = change owner)的用户更改为ubuntu用户。
答案 1 :(得分:0)
对 Peter 的响应稍作调整,动态创建用户,并递归更改同一项目中其他文件的权限:
sudo chown -R $USER .