【问题标题】:How to deploy local MySQL database to Heroku如何将本地 MySQL 数据库部署到 Heroku
【发布时间】:2013-02-17 22:23:49
【问题描述】:

我是使用 Heroku 的新手,我有一个 Ruby/Sinatra 应用程序,我计划在其中使用 MySQL 数据库作为主要数据存储。

但是,我不想将结果直接写入 Heroku 上的数据库。相反,我想将结果写入本地数据库,然后能够轻松地将本地数据库部署/更新/复制到 Heroku 上的“生产”数据库。

我该怎么做?

谢谢。

【问题讨论】:

  • roytuts.com/how-to-deploy-python-flask-mysql-based-application-in-heroku-cloud/

标签: mysql heroku


【解决方案1】:

首先 Heroku 原生使用 postgres。如果您在本地使用它,您的生活会更轻松。

您可以从 heroku 导入/导出 postgres 转储文件,如下所述:https://devcenter.heroku.com/articles/heroku-postgres-import-export

如果你真的想使用mysql,你有两条路可以走。

1) 在本地运行 mysql,但在使用 mysql2psql gem 迁移到 Heroku 时转换为 postgres,如下所述:https://devcenter.heroku.com/articles/heroku-mysql

2) 使用像https://addons.heroku.com/cleardb这样的mysql插件

但是我的建议是端到端使用 postgres,因为它已融入 Heroku,您将使用默认的 Heroku 使用方式,而不是反对它们。

Postgres 也很不错!

【讨论】:

  • 嗨,丹,是的,我正在研究使用 cleardb 插件。如果我使用 postgres,导入/导出是否会覆盖我的数据库?我也猜想有一些 postgres ruby​​ gem 可以让我直接连接到数据库并写入它。
  • 导入/导出将覆盖。老实说,我不确定您所说的“相反,我想将结果写入本地数据库,然后能够轻松地将本地数据库部署/更新/复制到 Heroku 上的“生产”数据库”。我认为这意味着您在本地创建数据,然后将其移动到 Heroku,但也许您的意思有所不同。
  • 好的,没关系。如果我想读/写数据库而不是使用导入/导出,我可以使用“pg”gem 并创建一个连接,对吗?我找不到任何使用“pg”gem 进行读/写的好例子。任何建议将不胜感激!
  • 是的,您应该能够在 database.yml 中使用正确的生产数据库配置从任何地方读/写。 heroku 数据库页面postgres.heroku.com/databases/YOUR_DB_NAME 告诉您所需的确切设置。然后,您可以将其视为另一个 ActiveRecord(或您选择的 ORM)连接。
  • roytuts.com/how-to-deploy-python-flask-mysql-based-application-in-heroku-cloud/
【解决方案2】:

我对 Ruby 和 Sinatra 一无所知,所以请随时发表评论,让我知道如果是这种情况,我有多么错误。但是,我认为在 Heroku 上提及 JawsDB 插件可能是恰当的,因为这里的最佳答案来自 2013 年,可能有点过时了。

以下是有关 JawsDB 插件信息的链接: https://devcenter.heroku.com/articles/jawsdb

配置插件就像在 CLI 中运行以下命令一样简单:

heroku addons:create jawsdb

然后使用 MySQL Workbench(或您使用的任何 GUI)中的参数配置主机、用户名、密码和数据库。

【讨论】:

    【解决方案3】:

    我写了一篇短文

    https://medium.com/@michaeltendossemwanga/import-mysql-database-to-heroku-with-one-command-import-db-sql-a932d720c82b

    这是一个批处理脚本来加快进程 https://gist.github.com/MichaelTendoSsemwanga/f013963092e3abcce801834871d14b03

    将此批处理脚本另存为 import.bat

    @echo off
    heroku config | findstr CLEARDB > config.txt
    set /p url=<config.txt
    
    set "string=%url:?=" & set "x=%"
    set "x=%string:/=" & set "dbname=%"
    echo DB name:   %dbname%
    echo DB name:   %dbname% >> config.txt
    
    set "x=%string:@=" & set "substring=%"
    set "host=%substring:/=" & set "x=%"
    echo Host:      %host%
    echo Host:      %host% >> config.txt
    
    set "x=%string::=" & set "substring=%"
    set "password=%substring:@=" & set "x=%"
    echo Password:  %password%
    echo Password:  %password% >> config.txt
    
    set "x=%string:://=" & set "substring=%"
    set "user=%substring::=" & set "x=%"
    echo User:      %user%
    echo User:      %user% >> config.txt
    
    mysql -u %user% -p%password% -h %host% -D %dbname%  < %1
    

    在heroku应用目录中,运行

    import db.sql
    

    Command line output

    【讨论】:

    • 当我运行“导入”时,它说找不到命令。 db.sql 文件是我的 mysql 文件,对吗?我从 phpmyadmin 导出的那个。
    猜你喜欢
    • 2018-12-13
    • 1970-01-01
    • 2013-07-20
    • 1970-01-01
    • 2021-05-30
    • 2018-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多