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