【问题标题】:What's the set up database on Heroku?Heroku 上的设置数据库是什么?
【发布时间】:2012-01-26 02:46:31
【问题描述】:

我已将带有 MySQL 数据库的 Rails 3.1 应用程序部署到 Heroku,一切正常。我的意思是,将字符正确保存到数据库中(似乎在 Heroku 上的数据库上使用 UTF 字符集)。

但是当我运行命令heroku db:pull 时(此命令将从 Heroku 下载整个数据库到本地主机上的数据库中),因此存储在 databased 中的下载数据编码错误 - 字符显示错误(看起来像我的本地 MySQL 数据库的字符集设置与 Heorku 上的 MySQL 不同)。

谁能给我一个提示,我如何找到在 Heroku 数据库上使用的字符集设置以及如何在我的本地 MySQL 数据库上使用它?

非常感谢!

【问题讨论】:

  • 您使用的是哪个 MySql 插件? Heroku 默认使用 Postgres。
  • 我的意思是您使用哪个插件来提供您的 MySQL 数据库?您使用的是 Xeround、ClearDB 还是 Amazon RDS?
  • 好吧,说实话 - 我不知道。当我想将我的应用程序部署到 Web 时,我只需运行命令 heroku run rake db:migrate - 这会将我的数据库模式从 localhost 复制到 heroku,然后我将只运行 heroku db:push(or pull) - 这就是我通常所做的一切。这里有什么重要的东西,我错过了什么吗?

标签: mysql database character-encoding ruby-on-rails-3.1 heroku


【解决方案1】:

问题在于 Heroku 在生产中使用的不是 MySQL 数据库,而是 PostgreSQL 数据库。

因此,您会遇到从不同数据库引擎提取和推送数据的各种问题。 Taps 是一个基于 activerecord 的进程,它可以减少这个问题,但并非总是如此。

理想情况下,您希望在您的开发机器上使用 PostgresSQL(通过Homebrew 在 OSX 上简单安装)并且您不会再看到这些问题。

或者,使用问题中的 cmets 中描述的 MySQL 插件之一。

【讨论】:

  • 好的,但这意味着我必须安装 PostrgeSQL 并使用它而不是 MySQL?对于有问题的字符不存在任何简单的修复(这些字符的数量是 3,也许是 4)?
  • 理想情况下,您应该在本地使用 Postgres,或者在 Heroku 上使用 MySQL 插件(需要付费)来解决这些问题。
【解决方案2】:

一切都不会丢失 - 如果您不想使用 PostgreSQL,您真的不必使用。

如果您的数据库足够小(因为 Heroku PostGres DB 也是 5Mb,所以必须如此)并且您希望保留在 mySQL 上,那么您可以使用 ClearDB mySQL 插件 - http://addons.heroku.com/cleardb - 他们的入门级数据库是免费的,并且与您默认获得的 Heroku Shared PostGres DB 大小相同,但请注意连接数是有限的,所以不要对您的网络测功机计数发疯。

添加插件后,如果您查看heroku config 的输出,则可以使用 DATABASE_URL 在本地您最喜欢的 mySQL 管理工具中创建连接,以将等数据恢复/备份到 ClearDB。您甚至可能会发现 heroku db:push 会起作用,但我个人没有尝试过,所以只能猜测。

【讨论】:

  • 我知道这是一个旧答案,但我想补充一点,即使 ClearDB 提供免费套餐,您也需要有一张经过验证的信用卡才能使用它。
猜你喜欢
  • 1970-01-01
  • 2015-02-26
  • 1970-01-01
  • 2012-02-11
  • 2018-12-21
  • 2012-06-19
  • 2014-02-04
  • 1970-01-01
  • 2013-05-15
相关资源
最近更新 更多