我是使用Heroku的新手,我有一个Ruby / Sinatra应用程序,我计划在其中使用MySQL数据库作为主数据存储。
但是,我不想直接将结果写入Heroku上的数据库。相反,我想将结果写入本地数据库,然后能够轻松地将本地数据库部署/更新/复制到Heroku上的“生产”数据库。
我该怎么做?
感谢。
答案 0 :(得分:61)
首先,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也非常好!
答案 1 :(得分:2)
我对Ruby&Sinatra一无所知,因此随时发表评论,让我知道如果是这样的话,我是多么的错误。但是,我认为在Heroku上提及JawsDB插件可能是适当的,因为此处的最高答案是2013年,可能有点过时。
这里是JawsDB插件上的信息链接: https://devcenter.heroku.com/articles/jawsdb
提供插件就像在CLI中运行以下命令一样简单:
heroku addons:create jawsdb
然后使用MySQL Workbench(或您使用的任何GUI)中的参数配置主机,用户名,密码和数据库。
答案 2 :(得分:0)
我写了一篇简短的文章
这是一个批处理脚本,可以加快过程 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