ClearDB使用時の注意

herokuのアドオンClearDBを利用する場合、日本語を含むデータの検索時に正常にヒットしない不具合が発生する場合がある。

具体的には、herokuClearDBアドオンを追加すると自動的に環境変数にCLEARDB_DATABASE_URLが追加されるが、この環境変数をそのままjdbc接続文字列として利用するとwhere句の条件が正しく処理されない不具合が発生する。

基本的にはフレームワーク起因ではなく、クライアントからの接続時の設定に起因する現象であるが、Play Framework 2.6から利用する場合は対応が必要となる。

対応方法としては、CLEARDB_DATABASE_URLとして追加される環境変数の後ろに&characterEncoding=UTF-8&characterSetResults=UTF-8
を追加すれば良い。

修正後のjdbc文字列が以下のようになるように設定すれば良い。

mysql://<ユーザー名>:<パスワード>@us-cdbr-east-03.cleardb.com/<テーブル名>?reconnect=true&characterEncoding=UTF-8&characterSetResults=UTF-8

対応は、herokuの管理画面上から環境変数を直接編集しても、conf側で設定しても良い。