[英]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.