[英]Ruby on Rails Heroku Error
我只是試圖將我的應用程序推送到heroku,但是當我去運行heroku run rake db:migrate時,它說:“目前無法一次運行。請稍后再試。” 關於我能做什么的任何想法?
從Heroku網站本身...
“ * SQLite在內存中運行,並將其數據存儲備份到磁盤上的文件中。雖然這種策略很適合開發,但Heroku的Cedar堆棧具有一個臨時文件系統。您可以對其進行寫入,也可以從中讀取,但是內容如果您要在Heroku上使用SQLite,則會每24小時至少丟失一次整個數據庫。
即使Heroku的磁盤具有持久性,運行SQLite仍然不是一個很好的選擇。 由於SQLite不能作為服務運行,因此每個dyno都將運行單獨的運行副本。 這些副本中的每一個都需要它們自己的磁盤支持的存儲。 這意味着,由於磁盤未同步,因此為您的應用程序提供動力的每個dyno都將具有不同的數據集。 您可以將應用配置為在Postgres上運行,而不是在Heroku上使用SQLite。*“
其他疑難解答...
即使不在Gemfile中也獲得SQLite錯誤
如果您已經從Gemfile中刪除了gem
sqlite3
行,並且在部署到Heroku時仍然出現錯誤,則可能是您正在使用的另一個gem將sqlite3
作為依賴項。 為了幫助找到此依賴關系的來源,請在您的Gemfile.lock
查找sqlite3
。 找到具有sqlite3
作為依賴項的gem並將其從您的Gemfile中刪除。 完成此運行包安裝后,請確保sqlite3
在您的Gemfile.lock
不再存在。
PostgreSQL數據庫可被任何語言和框架使用, 本節介紹如何通過Ruby on Rails框架連接到它。 在生產中使用與開發中相同的數據庫很重要,因此您將需要在本地安裝PostgreSQL數據庫。
如果要啟動新的Rails應用程序,可以通過運行以下命令將postgres
為默認數據庫:
rails new -d postgresql
這將在您的Gemfile中安裝pg
gem,並在本地編寫正確的config / database.yml配置。
如果您有一個預先存在的Rails應用程序,或者運行了沒有-d postgresql
標志的rails new命令,則可以手動轉換您的應用程序。
首先打開您的Gemfile並刪除以下行:
gem 'sqlite3'
替換為此行:
gem 'pg'
然后運行捆綁安裝。
接下來,您將需要轉換config / database.yml。 打開現有文件,可能看起來像這樣:
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
test:
adapter: sqlite3
database: db/test.sqlite3
pool: 5
timeout: 5000
production:
adapter: sqlite3
database: db/production.sqlite3
pool: 5
timeout: 5000
您將需要從以下位置更改適配器
adapter: sqlite3
對此:
adapter: postgresql
請注意,適配器名稱是postgresql
而不是postgres
或pg
。 您還需要將database:
更改為自定義名稱。 最終版本可能如下所示:
development:
adapter: postgresql
database: my_database_development
pool: 5
timeout: 5000
test:
adapter: postgresql
database: my_database_test
pool: 5
timeout: 5000
production:
adapter: postgresql
database: my_database_production
pool: 5
timeout: 5000
一旦安裝了pg
gem並遷移了config/database.yml
文件,您將需要創建數據庫並對其進行任何現有的遷移:
rake db:create
rake db:migrate
現在您需要$ git add .
和$ git commit -m postgres
那么您會很高興。 現在,當您使用Rails推送到Heroku時,將提供一個開發級的postgres實例並將其自動連接到您的應用程序。
如果您不使用Rails,則可能需要通過運行以下命令手動添加postgres插件
heroku addons:create heroku-postgresql
這可能意味着您達到了免費的測功機速率限制
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.