【问题标题】:Deploy MySQL database on Heroku with Ruby on Rails使用 Ruby on Rails 在 Heroku 上部署 MySQL 数据库
【发布时间】:2017-07-28 20:07:27
【问题描述】:

我正在尝试在 Heroku 上部署 Rails 项目。我的 Rails 应用程序使用 mysql2

我尝试过使用taps gem,但它不起作用。运行命令taps server mysql://root@localhost/heroku_ex tempuser tempass时出现以下错误:

连接数据库失败:Sequel::AdapterNotFound -> LoadError: cannot load such file -- mysql

有什么方法可以在 Heroku 上部署我的应用程序?如果可能的话,我宁愿只使用免费的附加组件。

【问题讨论】:

  • 你需要把db改成postgres
  • @DeepakMahakale,这不是真的。 Heroku 开箱即用地支持 PostgreSQL,但它也通过插件支持其他数据库。
  • “它不工作”是什么意思?您收到错误消息了吗?
  • @Chris,我收到错误消息:无法连接到数据库:Sequel::AdapterNotFound -> LoadError: cannot load such file -- mysql when I run the command: taps server mysql://root @localhost/heroku_ex tempuser tempass
  • @Harshini,您肯定不会在localhost 上运行 MySQL 服务器,并且您不会以root 的身份连接到它。您是从环境变量加载数据库连接信息,还是硬编码?

标签: ruby-on-rails heroku mysql2


【解决方案1】:

我通过在生产环境中添加 pg gem 和在开发环境中添加 mysql2 解决了这个问题。

group :development, :test do
 gem 'mysql2'
end

group :production do
 gem 'listen', '~> 3.0.5'
 gem 'pg'
  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
 gem 'spring'
 gem 'spring-watcher-listen', '~> 2.0.0'
end

【讨论】:

  • 使用一个数据库引擎开发(和测试!)并部署到完全不同的引擎是一个非常糟糕的主意。您几乎肯定会在每个环境中遇到在另一个环境中没有出现的问题。我强烈建议您在 Heroku 上使用 MySQL(如我所述)或切换到 PostgreSQL 进行开发和测试。
【解决方案2】:

这里有一些活动部件。

首先,Heroku 默认不支持 MySQL。如果您想使用 MySQL 而不是 PostgreSQL,则必须提供 add-on that provides it。目前至少有两个附加组件提供 MySQL 或 MariaDB¹ 支持以及免费层²。

接下来,Heroku 不在localhost 上运行数据库服务器。您如何处理开发机器和 Heroku 服务器之间的不同数据库配置?

endorsed by Heroku 的一种策略是将配置存储在环境中。遵循此模型,您可以通过修改环境变量而不是编辑文件来更改应用程序的配置。幸运的是,Rails 出现在 override config/database.yml with configuration from the DATABASE_URL variable by default 上,所以这种方法应该很合适。

数据库插件通常会自动为您设置一个环境变量。例如,JawsDB Maria add-on sets JAWSDB_MARIA_URL when it is provisioned。这不是 Rails 寻找的变量,因此您要么必须告诉 Rails 寻找 JAWSDB_MARIA_URL 而不是 DATABASE_URL,要么手动设置 DATABASE_URL 以包含 JawsDB 在 JAWSDB_MARIA_URL 中提供的相同 URL。


¹MariaDB 是 MySQL 的一个分支,旨在完全兼容。

²请注意,免费套餐可能非常有限,例如仅提供 5MB 的存储空间。随着您继续开发应用程序,您可能需要升级到付费数据库层。

【讨论】:

    猜你喜欢
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-25
    • 2023-03-31
    • 2012-05-23
    • 2019-04-01
    • 1970-01-01
    相关资源
    最近更新 更多