Grails3.0.4でPostgresqlに接続する

今回は接続先データベースをH2からpostgresqlにしてみようと思います。
おそらく、デプロイ先はHerokuにすると思うので、先にそうしておこうということです。

PosgresqlのJDBCドライバを入れる

まず、PostgresqlのJDBCドライバを使うようにbuild.gradleに記述します。
2015-08-12時点で最新ぽいのを入れました。

dependencies {
  // 略
  runtime 'org.postgresql:postgresql:9.4-1201-jdbc41'
  // 略
}

application.ymlの修正

次にapplication.ymlの修正です。

dataSourceの箇所と、environments以下の環境ごとの箇所の修正になります。
ユーザー名、パスワードは適当に設定してください。

dataSource:
    pooled: true
    jmxExport: true
    driverClassName: org.postgresql.Driver
    username: example
    password: example

environments
    development:
        dataSource:
            dbCreate: update
            url: jdbc:postgresql://localhost/example_development
            logSql: true
    test:
        dataSource:
            dbCreate: update
            url: jdbc:postgresql://localhost/example_test
    production:
        # 略(とりあえず変更せず)

developmentのdbCreateのところを、create-dropからupdateにしておきました。
というのも、create-dropだとアプリの終了・起動時に毎回削除されてしまうためです。これが正しい設定なのかはまだよくわかっていませんが、とりあえずこうしています。一旦アプリを再起動させてもデータが残っていることは確認できたので、目的は果たせていると思います。

詳しい人は是非とも教えてください!

データベースユーザーとデータベースの作成

postgresqlはインストールされているものとします。
ない場合はインストールしましょう。Macならhomebrewで入れられます。

プロジェクト用のデータベースユーザーとデータベースを作ってみます。
まずは、データベースユーザーの作成。
ユーザーはexample、パスワードもexampleとします(適当に変えてください)

createuser -h localhost -d example -W
password: (表示されないけれどexampleと入力してEnter)

次に、データベースを作ります。
開発用のexample_developmentとテスト用のexample_testを作っておきます。
-Oオプションで、データベースの所有者(Owner)をexampleユーザーにしています。

createdb -E UTF-8 --locale=C -T template0 -O example example_development
createdb -E UTF-8 --locale=C -T template0 -O example example_test

Grailsの起動

とりあえずこれで起動してみました。

grails run-app

無事に起動すれば成功です。前に作成したBookのScaffoldからBookのデータの登録ができるところまで確認できました。

まとめ

Grailsでの対象データベースの変更はJDBCドライバを入れ替えるくらいでそこまで大変ではないが、データベースの準備はやっぱり大変である…。


カテゴリー Grails, groovy | タグ | パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です