こんにちはちゆりです。
今回はいよいよHerokuのアプリケーションにPostgreSQLを導入しようと思います。
Herokuとはなんぞや?
そもそもHerokuへのデプロイ方法を教えてくれ
という方は以下の記事から

Heroku CLIからPostgreSQLを導入します
HerokuへのPosygreSQLの導入はHerokuの管理画面からでも可能です。そちらのほうがわかりやすいかと思います。
しかし,管理画面からの導入はググれば山ほど方法が出てきますので改まって僕がこの記事で説明することでもないのかな...と思います。
ちなみに僕はターミナルを使って作業をするほうが効率もよく,好きなので今回はターミナルからの操作を中心に説明していきます。(慣れればこっちのほうが簡単...!?)
では,さっそくherokuのアプリがあるディレクトリへ移動し,ターミナルにて以下を入力
$ heroku addons:create heroku-postgresql:hobby-dev
これで導入できます。
エラーの解決(エラーの場合)
以下のエラーが出る場合があります。(僕も出ました)
› Error: Missing required flag:
› -a, --app APP app to run command against
› See more help with --help
-a オプションでアプリ名を選択してあげれば解決しました。
$ heroku addons:create heroku-postgresql:hobby-dev -a <heroku アプリ名>
DBが作成されるとこのように出力されます。
Created postgresql-<xxxxxx> as DATABASE_URL
PostgreSQLが作成されたのか確認
一応PostgreSQLが作成されたか確認しておきましょう。
$ heroku pg:info -a <heroku アプリ名>
pg(PostgreSQL)情報がズラッと出てきます。
=== DATABASE_URL
Plan: Hobby-dev
Status: Available
Connections: 0/20
PG Version: 11.2
Created: 2019-05-12 07:16 UTC
Data Size: 7.7 MB
Tables: 0
Rows: 0/10000 (In compliance)
Fork/Follow: Unsupported
Rollback: Unsupported
Continuous Protection: Off
Add-on: postgresql-<xxxxxx>
PlanがHobby-devであれば無料枠で利用可能です。
書き込み可能行数:1 万
同時接続数:20
1 か月あたりのダウンタイム:最大 4 時間
Heroku CLI 経由のアクセス
PGBackups:2 つまで保持可能
Dataclips
ロールバック:0 秒
メモリキャッシュできない等
個人の開発程度であれば十分運用可能な制限ですね。(ちなみに僕もまだHerokuへの課金は行っていない)
ローカルからherokuのPostgreSQLへ接続
ローカル(terminal)からPostgreSQLへ接続するのは以下のコマンドとなります。
$ heroku pg:psql -a <herokuアプリ名>
<herokuアプリ名>::DATABASE=>
が表示されればアクセス成功です。
postgreSQLコマンドで操作していきましょう。
また,データベースから抜ける場合は「\q」でOKです。
(MySQLを普段使っている僕はついつい「exit」を打っていた。。)
エラーの解決法(エラーの場合)
ローカルにpsql(PostgreSql)コマンドが入っていないとエラーとなります。
$ brew install postgresql
または,
$ sudo apt-get install postgresql
でPostgreSQL をMacにインストールすれば解決です。
postgresqlがうまく起動出来ない場合は以下の記事を参考に

DATABASE_URLの取得
WebアプリからDB(今回の場合はPostgreSQL)へ接続する場合はDATABASE_URLをコード内に記述する必要があるかと思います。
その場合は
$ heroku config -a <herokuアプリ名>
で取得可能となります。
以上でHerokuへのPostgreSQLの導入は完了です。
CLIを使うと単純で,すばやく導入できますね。CLIで作成したデータベース情報もHerokuの管理画面で確認することができます。
ちなみに
僕も本格的にHerokuでシステムを運用するために,今後はPostgreSQLを使って構築していこうと思います。その中でのノウハウやつまずいたポイントを共有して記事にしていこうと思いますのでお楽しみに。
コメント