Heroku命令:Heroku Rake db:migrate 失败

4
当我运行 Heroku db:migrate 时,出现错误:
rake aborted!
no such file to load -- sqlite3
/disk1/home/slugs/313735_a606978_6916/mnt/Rakefile:4
(See full trace by running task with --trace)
(in /disk1/home/slugs/313735_a606978_6916/mnt)

当我执行时

heroku rake db:push

我成功了。

在Heroku服务器上,我需要安装一些东西吗?


不算是一个具体的编程问题,更准确地说……Server Fault - Matchu
1
部署是开发/测试过程的一部分。 - Joseph Yaduvanshi
2个回答

6

Heroku不支持SQLite数据库。你需要在生产环境中使用PostgreSQL。

group :production, :staging do
  gem "pg"
end

group :development, :test do
  gem "sqlite3-ruby", "~> 1.3.0", :require => "sqlite3"
end

抱歉,我意识到我应该在Gemfile中添加它们...现在它可以工作了!谢谢! - Per-Olof Hermansson
@Per-Olof Hermansson:在StackOverflow上,当一个答案解决了你的问题时,点击旁边的绿色勾号非常重要,这样可以让回答者得到认可,也让其他人知道这个问题已经得到解决 :) 谢谢! - Matchu

0

我不确定API的复杂性,但Heroku主页显示他们不使用heroku db:migrate,而是:

heroku rake db:migrate

试一下吧。


作为StackOverflow上的一种类型,heroku rake db:migrate是导致错误的原因,但解决方案是在gemfile中添加gem "pg",正如Simon Carletti的答案所示。 - Per-Olof Hermansson
Heroku完全忽略您的database.yml文件并使用PostgreSQL。因此,您可以将其放入源代码控制并在本地使用sqlite3。您根本不需要“pg” gem,因为Heroku会提供它,因此保持您的Gemfile干净,并在不使用时将其删除。 - oma
@Ole:那个问题我不太确定。Heroku文档展示包括pg gem,而且我更喜欢明确地表达这一点。清楚地表明我只想在开发环境中加载sqlite3,只想在生产环境中加载pg,要比依赖于Heroku神奇地实现这一点更好。 - Matchu
我可以确定的是,你不需要在Gemfile中包含它,我想要让这一点清楚,但是是否将其包含在Gemfile中,取决于你。我不会这样做 :) - oma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接