Herokuのデータベースの代わりに、個人のWebサーバーからMySQLデータベースを使用できますか?
次のように本番データベースを構成しました。
production:
adapter: mysql2
database: somedatabase
username: someusername
password: somepassword
Host: 1.1.1.1:1234
しかし、これは機能しません。私のアプリはまだherokuの共有データベースを使用しています。
これは古いですが、誰かが答えを探しに立ち寄った場合、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ホストからの接続を受け入れる限り)。
私はこれに役立つかもしれない宝石を書きました。あなたはそれを見つけることができます:
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を直接使用すると魅力のように機能しました!また、データベースパスワードに特殊文字が含まれている場合は、それらを正しくエスケープしてください(「!」の「\!」など)。
ええ、これは非常に簡単で簡単です。
1-mysql dbを作成する2-mysql dbユーザーを作成する(デフォルトを設定する)3.1-Herokuパネル/ Config Varsに移動する
3.2-「Reveal Vars」をクリックして、この場合DATABASE_URL
で変更するものを編集(鉛筆アイコンをクリック)します(名前がDATABASE_URL
の新しいものだけが存在しない場合)
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
を使用した例が表示されます
お役に立てれば!!!
Heroku Amazon RDSアドオン をご覧ください。私はそれを使用していると言っているわけではありませんが、それはあなたが何をする必要があるか、そしてHerokuがデータベースを管理する方法についての洞察を与えます-基本的にあなたはmysqlインスタンスに設定変数を設定する必要があります。
Herokuはdatabase.ymlを無視します。 Amazon RDSソリューションのJohn Beynonが提案したもの、または他の類似のアドオン(ある場合)を探索する必要があります。 IMO、MySQL dbを使用する必要性を再評価するか、他のホスティングを見つける必要があります。あなたがまだそれを知らなかった場合に備えて、コマンド:
heroku db:Push
mySQL開発データベースのスキーマとデータの両方をherokuのPostgresデータベースに複製します。したがって、MySQLを開発に使用することは問題ありません。
お役に立てば幸いです。