ぷっぽプログラミング備忘録

linux, javascript, php, C#, そのうちScalaとかアプリ開発とかやってみたいです。

heroku + Laravel で外部サーバー上にあるデータベースに接続する

結論

herokuはデプロイが独特ですが、中身は普通のサーバーなので、 Laravelのconfigのdatabase部分に、データベースの設定をすれば動きました。 ただし、ご存知のように、herokuのLaravelの設定は.envに書いても意味ありませんので…。

heroku config:set DB_CONNECTION=mysql
heroku config:set DB_HOST=ccccc
heroku config:set DB_DATABASE=ddddd
heroku config:set DB_USERNAME=aaaaa
heroku config:set DB_PASSWORD=bbbbb

みたく地道にconfig:setでherokuに環境変数を設定していく必要はあります。

heroku上のLaravelの設定の確認

まずtinker起動。

heroku run php artisan tinker
config('database.default');

でdatabaseのドライバーの確認。 mysqlpgsql とかでるはずです。この文字列をdatabase.connectionsの後ろにつけて

config('database.connections.pgsql');

と実行すると、Laravelのデータベースの設定がでますので、

> config('database.connections.pgsql');
= [
    "driver" => "pgsql",
    "url" => null,
    "host" => "123.123.123.12などのipか、hogehoge.comみたいなhost名か",
    "port" => "5432とかのポート番号",
    "database" => "データベース名",
    "username" => "postgresのユーザー名",
    "password" => "パスワード",
    "charset" => "utf8",
    "prefix" => "",
    "prefix_indexes" => true,
    "search_path" => "public",
    "sslmode" => "prefer",
  ]

とかでるので、そこで確認できます。

参考

(Laravel)(MySQL)herokuでmigrateできない。

HerokuにLaravelで作ったアプリをデプロイする方法(MySQL編) - Qiita