web-dev-qa-db-ja.com

HerokuアプリのリモートMySQLデータベース

Herokuのデータベースの代わりに、個人のWebサーバーからMySQLデータベースを使用できますか?

次のように本番データベースを構成しました。

production:
    adapter: mysql2
    database: somedatabase
    username: someusername
    password: somepassword
    Host: 1.1.1.1:1234

しかし、これは機能しません。私のアプリはまだherokuの共有データベースを使用しています。

36
dormitkon

これは古いですが、誰かが答えを探しに立ち寄った場合、gemを使用するよりもはるかに簡単です。 DATABASE_URLおよびSHARED_DATABASE_URL(2番目が必要かどうかわからない)。データベースのURL形式はadapter://username:password@hostname:port/database、たとえば、次のようにします。

heroku config:add DATABASE_URL=mysql://etok:somepassword@<your-server>:3306/etok
heroku config:add SHARED_DATABASE_URL=mysql://etok:[email protected]:3306/etok

次に、アプリを再デプロイします。 DATABASE_URLそして、そこからdatabase.ymlを生成します。デフォルトのポートはすでに3306であるため、URLに必要ありません。デプロイすると、database.ymlが生成されることがわかります。

-----> Writing config/database.yml to read from DATABASE_URL

その後、設定が完了します(サーバーがherokuホストからの接続を受け入れる限り)。

51
Vince

私はこれに役立つかもしれない宝石を書きました。あなたはそれを見つけることができます:

http://github.com/nbudin/heroku_external_db

8
Nat Budin
heroku config:add DATABASE_URL=mysql://dbusername:dbpassword@databasehostIP:3306/databasename
heroku config:add SHARED_DATABASE_URL=mysql://dbusername:dbpassword@databasehostIP:3306/databasename

次に、

Heroku restart 

それはすべきです.

重要な注意:godaddyなどの一部の共有ホスティングサービスでは、ホスト名を直接指定するのではなく、データベースのホストIPアドレスを使用することをお勧めします。dbホスト名はuser.345432のようになります。 .abcd.godaddy.comそしてherokuがそれを適切に解決できないようです(個人的な経験)、ホスト名をIPアドレスに解決し、IPを直接使用すると魅力のように機能しました!また、データベースパスワードに特殊文字が含まれている場合は、それらを正しくエスケープしてください(「!」の「\!」など)。

4
Shan Valleru

ええ、これは非常に簡単で簡単です。

1-mysql dbを作成する2-mysql dbユーザーを作成する(デフォルトを設定する)3.1-Herokuパネル/ Config Varsに移動する

enter image description here

3.2-「Reveal Vars」をクリックして、この場合DATABASE_URLで変更するものを編集(鉛筆アイコンをクリック)します(名前がDATABASE_URLの新しいものだけが存在しない場合)

enter image description here

3(#2)-コマンドラインの使用

heroku config:add DATABASE_URL=mysql://dbusername:dbpassword@databasehostIP:databaseserverport/databasename

それからちょうど

heroku restart

そして構文を覚えておいてください:

DATABASE_URL

mysql://user:password@hostnameOrIPAddress:PortNumber/databasename

MySQL DBMSのデフォルトのポート番号は次のとおりです:3306

そのため、前述のDATABASE_URL=mysql://dbusername:dbpassword@databasehostIP:3306/databasenameを使用した例が表示されます

お役に立てれば!!!

1
d1jhoni1b

Heroku Amazon RDSアドオン をご覧ください。私はそれを使用していると言っているわけではありませんが、それはあなたが何をする必要があるか、そしてHerokuがデータベースを管理する方法についての洞察を与えます-基本的にあなたはmysqlインスタンスに設定変数を設定する必要があります。

1
John Beynon

Herokuはdatabase.ymlを無視します。 Amazon RDSソリューションのJohn Beynonが提案したもの、または他の類似のアドオン(ある場合)を探索する必要があります。 IMO、MySQL dbを使用する必要性を再評価するか、他のホスティングを見つける必要があります。あなたがまだそれを知らなかった場合に備えて、コマンド:

heroku db:Push

mySQL開発データベースのスキーマとデータの両方をherokuのPostgresデータベースに複製します。したがって、MySQLを開発に使用することは問題ありません。

お役に立てば幸いです。

1
mikewilliamson