2017-01-05 68 views

回答

3

其他海報是正確的,因爲你不能在Heroku上使用SQLite,但我想花一分鐘來說明爲什麼這是真的。

Heroku在平臺上執行最佳實踐。這意味着他們對部署採取非常有見地的立場,並迫使您以可擴展的方式部署代碼變得更簡單。

他們這樣做的一種方式是將您的網絡服務器視爲短暫的:他們在運行的測試儀上寫入磁盤的任何數據都可以隨時銷燬。

此設計決定迫使您(應用程序的開發人員)將應用程序需要的文件存儲在更安全,更快速,專用的文件存儲服務(如Amazon S3)中。這種做法會帶來很多可擴展性優勢:

  • 如果您的web服務器不需要寫入磁盤,可以多次部署它們,而無需擔心存儲限制。
  • 不需要在網絡服務器上共享磁盤。共享磁盤通常會導致IO爭用並可能對性能產生負面影響。
  • 它可以輕鬆地跨商品服務器水平擴展您的Web應用程序,因爲不需要磁盤資源。

那麼,爲什麼你不能在Heroku上使用SQLite的原因是因爲SQLite的存儲在磁盤上文件的所有數據庫的信息,因爲Heroku上會刪除磁盤上的文件,這是不行的。

這就是爲什麼我們建議使用類似的Postgres或MySQL一個「真正的」數據庫服務器,因爲它們分別託管,並擁有自己的存儲/等

如果你真的使用SQLite在Heroku上,您始終可以將SQLite數據庫託管在獨立服務器上(Heroku外部),然後通過Internet連接到該數據庫。但是這並不是真正的建議,特別是因爲SQLite並不是真正爲這種使用模式而設計的。

0

你不能在Heroku中使用sqlite。簡單的解決方案是指定寶石。

的Gemfile:

group :development, :test do 
    gem 'sqlite3' 
end 

group :production do 
    gem 'pg' #PostgreSQL 
    gem 'rails_12factor' 
end 
0

安裝 'PG' 寶石生產

group :production do 
    gem 'pg' 
end 

您仍然可以使用sqlite在發展,如果你想

group :development do 
    gem 'sqlite3' 
end 

的Heroku在服務器上預先安裝了postgres。你可以使用sqlite,但你必須自己安裝它。這很容易。

相關問題