耙子流产了! ActiveRecord :: StatementInvalid:SQLite3 :: ReadOnlyException

时间:2014-04-16 12:35:17

标签: ruby-on-rails ruby-on-rails-4

我正在尝试在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

2 个答案:

答案 0 :(得分:3)

如果您在服务器上以开发模式运行(通常不是您想要做的,但对学习有用),则需要修改sqlite数据库的权限。所以,如果您在EC2上运行ubuntu AMI(我认为您是),请运行sudo chown ubuntu:ubuntu development.sqlite3sudo chown ubuntu:ubuntu test.sqlite3

这会将拥有该文件(chown = change owner)的用户更改为ubuntu用户。

答案 1 :(得分:0)

对 Peter 的响应稍作调整,动态创建用户,并递归更改同一项目中其他文件的权限:

sudo chown -R $USER .