GIT:为什么每次我git推送到生产,数据库得到清理?

时间:2014-11-16 01:33:23

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

每次在修改某些代码并尝试显示应用后运行git push时,都会出现以下no such table错误。

stdout.log(生产环境)

Started GET "/" for 111.222.333.444 at 2014-11-13 22:07:36 +0900
Processing by ArticlesController#index as HTML
SQLite3::SQLException: no such table: articles: SELECT  "articles".* FROM "articles"   ORDER BY created_at DESC LIMIT 10
Completed 500 Internal Server Error in 16ms

ActiveRecord::StatementInvalid (SQLite3::SQLException: no such table: articles: SELECT  "articles".* FROM "articles"   ORDER BY created_at DESC LIMIT 10):
  app/controllers/articles_controller.rb:7:in `index'

我所做的程序如下所述。

rake aseets:precompile
git add .
git commit -m "xxx"
git checkout master
git merge xxx    #branch name
git push origin master

我在托管服务(而不是heroku)上执行以下命令,因为显示了上面提到的错误消息。

rake db:migrate
rake db:seed

这是否意味着每次执行git push时都清理了所有存储的数据? 如果我运行git push,请告诉我如何保存数据。

1 个答案:

答案 0 :(得分:3)

与大多数PaaS提供商一样,Heroku does not provide a persistent filesystem。每次部署时,您在本地存储的所有文件都将丢失。

Heroku上文件存储的一般建议是use something like Amazon S3,它允许您跨部署存储文件。但是,如果您可以远离SQLite,您应该考虑使用natively supported by Heroku之一迁移到PostgreSQL,即supported data storage addons或其他数据库。