我使用默认的Sqlite数据库开发了一个Ruby on Rails应用程序。当我在Heroku上部署它时,一些页面没有加载。
答案 0 :(得分:3)
其他海报是正确的,因为你不能在Heroku上使用SQLite,但我想花一分钟来说明为什么这是真的。
Heroku在平台上实施最佳实践。这意味着他们对部署采取了一种非常自以为是的立场,并强迫您以可扩展部署的方式编写代码。
他们这样做的方法之一就是将您的网络服务器视为短暂的:他们在正在运行的dyno上写入磁盘的任何数据都可以随时销毁。
此设计决策迫使您(应用程序的开发人员)将应用程序所需的文件存储在更安全,更快速,专用的文件存储服务(如Amazon S3)中。这种做法带来了很多可扩展性的好处:
因此,你不能在Heroku上使用SQLite的原因是因为SQLite将所有数据库信息存储在磁盘上的文件中,并且因为Heroku将删除磁盘上的文件,所以这不会起作用。
这就是为什么建议使用真正的'像Postgres或MySQL这样的数据库服务器,因为它们是单独托管的,并且有自己的存储/等等。
如果确实想在Heroku上使用SQLite,您可以随时在单独的服务器(Heroku外部)上托管SQLite数据库,然后通过Internet连接到该数据库。但这并不是真正推荐的,特别是因为SQLite并不是真的为这种使用模式而设计。
答案 1 :(得分:0)
您不能将SQLite与Heroku一起使用。他们需要使用Postgres。 Here is a good tutorial that walks you through the switch from SQLite to Postgres
答案 2 :(得分:0)
你不能在Heroku中使用sqlite。简单的解决方案是指定宝石。
<强>的Gemfile:强>
group :development, :test do
gem 'sqlite3'
end
group :production do
gem 'pg' #PostgreSQL
gem 'rails_12factor'
end
答案 3 :(得分:0)
为生产安装'pg'宝石
group :production do
gem 'pg'
end
如果您愿意,还可以在开发中使用sqlite
group :development do
gem 'sqlite3'
end
Heroku已在服务器上预装了postgres。你可以使用sqlite但你必须自己安装它。这更容易。