rake db:migrate 在生产环境中似乎无法工作

59

我的应用有两个实例:一个是开发环境,一个是生产环境。我的开发环境数据库名为snip_development,生产环境数据库名为snip

我一直在开发环境中进行数据库迁移,一切都运行得很好。但是最近我创建了一个生产环境实例,但 rake db:migrate似乎没有任何效果。当我运行rake db:migrate并登录到我的数据库服务器时,我发现snip_development拥有我期望的所有表,但snip没有任何表。

我怀疑问题在于rake db:migratesnip_development上运行,而不是在snip上运行,这就是我看不到任何变化的原因。

我如何让我的迁移在生产数据库上工作?

2个回答

172
有时候我会忘记使用谷歌。答案如下:
rake db:migrate RAILS_ENV=production

41
现在,由于 Stack Overflow 的特性,当你使用 Google 搜索时,这篇答案就是你获得的结果。多么美妙的反讽! - Jason Swett
我曾经遇到过同样的问题,但是当我运行它时,它显示了一个错误:“SQLite3 :: SQLException:重复的列名:confirmation_token”。 - Alfie
4
也许不要在生产环境中使用SQLite。我认为它并不适合这种情况。我使用PostgreSQL。 - Jason Swett
是的,我现在也使用PostgreSQL... :) - Alfie
8
每次我重新访问这个页面时,我都希望能够为你点赞。 - David Sigley
显示剩余2条评论

5
对我来说,上面的答案不起作用。我必须添加bundle exec才能使它工作。
bundle exec rails db:migrate RAILS_ENV=production

我认为这是因为rake曾经是bundle exec rake的别名,但自从rails 5左右新命令是rails db:migrate,bundle exec rake的别名是动态确定的。如果rails db:migrate仍然不起作用,原因可能是您的路由不正确或者项目的gemset没有定义或加载...这只是一个猜测、更新日志的阅读以及我过去使用的东西的混合体,请勿引用此评论。 - Alexis
我们的服务器上有不止一个版本的Rails(v.5.2.1和v.6.0.0),因此在我们的环境中rails命令将无法工作。 - yohanes
我明白了,通常我会有bash脚本来加载每个路径,具体取决于项目的情况,但唯一的真正好处就是可以访问这些方法。 - Alexis

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