質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.54%

DB接続におけるapplication.confの設定内容

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 985

Nitta

score 85

お世話になってます。
Mysqlへの接続において、application.confファイルの設定内容が
おかしいため接続できません。
周辺のファイルも掲載しているので是非、ご教示下さい。
以上、宜しくお願いします。

●plugin.sbt

// The Play plugin
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.5.10")

// Web plugins
addSbtPlugin("com.typesafe.sbt" % "sbt-coffeescript" % "1.0.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-less" % "1.1.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-jshint" % "1.0.4")
addSbtPlugin("com.typesafe.sbt" % "sbt-rjs" % "1.0.8")
addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.1.1")
addSbtPlugin("com.typesafe.sbt" % "sbt-mocha" % "1.1.0")
addSbtPlugin("org.irundaia.sbt" % "sbt-sassify" % "1.4.6")

// Play enhancer - this automatically generates getters/setters for public fields
// and rewrites accessors of these fields to use the getters/setters. Remove this
// plugin if you prefer not to have this feature, or disable on a per project
// basis using disablePlugins(PlayEnhancer) in your build.sbt
addSbtPlugin("com.typesafe.sbt" % "sbt-play-enhancer" % "1.1.0")

// Play Ebean support, to enable, uncomment this line, and enable in your build.sbt using
// enablePlugins(PlayEbean).
addSbtPlugin("com.typesafe.sbt" % "sbt-play-ebean" % "3.0.2")
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "4.0.0")


●build.sbt

name := """Nitta"""

version := "1.0-SNAPSHOT"

lazy val root = (project in file(".")).enablePlugins(PlayJava, PlayEbean)

scalaVersion := "2.11.7"

libraryDependencies ++= Seq(
  javaJdbc,
  cache,
  javaWs  
)

routesGenerator := InjectedRoutesGenerator

EclipseKeys.preTasks := Seq(compile in Compile)

EclipseKeys.projectFlavor := EclipseProjectFlavor.Java

EclipseKeys.createSrc := EclipseCreateSrc.ValueSet(EclipseCreateSrc.ManagedClasses, EclipseCreateSrc.ManagedResources)

libraryDependencies += "com.zaxxer" % "HikariCP" % "2.7.1"

libraryDependencies += "mysql" % "mysql-connector-java" % "8.0.13"


●エラー内容

play.api.Configuration$$anon$1: Configuration error[Cannot connect to database [default]]
        at play.api.Configuration$.configError(Configuration.scala:154)
        at play.api.Configuration.reportError(Configuration.scala:806)
        at play.api.db.DefaultDBApi$$anonfun$connect$1.apply(DefaultDBApi.scala:48)
        at play.api.db.DefaultDBApi$$anonfun$connect$1.apply(DefaultDBApi.scala:42)
        at scala.collection.immutable.List.foreach(List.scala:381)
        at play.api.db.DefaultDBApi.connect(DefaultDBApi.scala:42)
        at play.api.db.DBApiProvider.get$lzycompute(DBModule.scala:72)
        at play.api.db.DBApiProvider.get(DBModule.scala:62)
        at play.api.db.DBApiProvider.get(DBModule.scala:58)
        at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:81)
Caused by: play.api.Configuration$$anon$1: Configuration error[jdbcUrl is required with driverClassName.]
        at play.api.Configuration$.configError(Configuration.scala:154)
        at play.api.PlayConfig.reportError(Configuration.scala:996)
        at play.api.db.HikariCPConnectionPool.create(HikariCPModule.scala:70)
        at play.api.db.PooledDatabase.createDataSource(Databases.scala:199)
        at play.api.db.DefaultDatabase.dataSource$lzycompute(Databases.scala:123)
        at play.api.db.DefaultDatabase.dataSource(Databases.scala:121)
        at play.api.db.DefaultDatabase.getConnection(Databases.scala:142)
        at play.api.db.DefaultDatabase.getConnection(Databases.scala:138)
        at play.api.db.DefaultDBApi$$anonfun$connect$1.apply(DefaultDBApi.scala:44)
        at play.api.db.DefaultDBApi$$anonfun$connect$1.apply(DefaultDBApi.scala:42)
Caused by: java.lang.IllegalArgumentException: jdbcUrl is required with driverClassName.
        at com.zaxxer.hikari.HikariConfig.validate(HikariConfig.java:893)
        at play.api.db.HikariCPConfig.toHikariConfig(HikariCPModule.scala:141)
        at play.api.db.HikariCPConnectionPool$$anonfun$1.apply(HikariCPModule.scala:57)
        at play.api.db.HikariCPConnectionPool$$anonfun$1.apply(HikariCPModule.scala:54)
        at scala.util.Try$.apply(Try.scala:192)
        at play.api.db.HikariCPConnectionPool.create(HikariCPModule.scala:54)
        at play.api.db.PooledDatabase.createDataSource(Databases.scala:199)
        at play.api.db.DefaultDatabase.dataSource$lzycompute(Databases.scala:123)
        at play.api.db.DefaultDatabase.dataSource(Databases.scala:121)
        at play.api.db.DefaultDatabase.getConnection(Databases.scala:142)

●application.conf

akka {
}

play.crypto.secret = "changeme"

play.modules {
  enables += "play.api.db.DBModule"
 enables += "play.api.db.HikariCPModule"
}

fixedConnectionPool=2

play.i18n {
  langs = [ "en" ]
}

play.http {
  session {
  }

  flash {
  }
}

play.server.netty {
}

play.ws {
  ssl {
  }
}

play.cache {
}

play.filters {
  cors {
  }

  csrf {
  }

  headers {
  }

  hosts {
  }
}

play.evolutions {
  db.default.enabled = false
}

play.db {
  prototype {
  }
}

db.default.driver=com.mysql.jdbc.Driver
db.default.username=root
db.default.password="nfgwe4706"
db.default.jdbcUrl="jdbc:mysql://localhost:3306/sample_db"

db.default.hikaricp.driverClassName=com.mysql.cp.jdbc.Driver
db.default.hikaricp.username=root
db.default.hikaricp.password="nfgwe4706"
db.default.hikaricp.jdbcUrl="jdbc:mysql://localhost:3306/sample_db"
db.default.hikaricp.minimumIdle=${fixedConnectionPool}
db.default.hikaricp.maximumPoolSize=${fixedConnectionPool}

ebean.default=["model.*"]
"assets.cache./public/stylesheets/bootstrap.min.css"="max-age=3600"

database.dispatcher{
 type=Dispatcher
 executor="thread-pool-executor"
 throughput=1
 thread-pool-executor{
  fixed-pool-size = ${fixedConnectionPool}
 }
}
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • kunai

    2019/01/22 10:01

    「application.confファイルの設定内容がおかしいため」と判断された理由はなんでしょう。
    このアプリケーションが置かれているサーバなりPCからCLI等でそのMySQLへ直接接続することは可能でしょうか。
    (MySQL側で外部からの接続を拒否していたり、MySQLがインストールされているサーバのFWではじかれていたりしないか)

    キャンセル

  • Nitta

    2019/01/22 11:17 編集

    お世話になってます。
    db.hikaricp及びdb.defaultのurlやdriverの部分で
    よくエラーが出現していたので、application.confファイルの設定内容が
    おかしいかなと考えました。
    また、DBはcmdでmysql -u root -p で接続可能(確認済み)です。

    キャンセル

回答 2

checkベストアンサー

+1

起動時プロパティと代替設定

設定は taketoma さんの回答をベースラインとします。

起動時にシステムプロパティを指定する

最強な設定方法は、アプリケーションの起動パラメータにjavaのシステムプロパティを指定する方法です。
例えば、sbtを使うなら以下のように-D<プロパティ名>=<値>を指定します。

sbt -Ddb.default.url="jdbc:mysql://localhost:3306/sample_db" run

4つのプロパティを全て指定するには以下のようにします。

sbt -Ddefault.driver=com.mysql.jdbc.Driver \
-Ddefault.username=root \
-Ddefault.password="nfgwe4706" \
-Ddefault.url="jdbc:mysql://localhost:3306/sample_db" \
run


\は行がつながっていると思ってください。まず、この方法で試してみてください。エラーが出るなら教えてください。

代替application.conf

デフォルトではconf/application.confが使われますが、別の設定ファイルを使うことができます。
別ファイルは、やはり起動パラメータで制御します。

以下の<ファイル名>にconf/配下の任意のファイルを指定する。

sbt -Dconfig.resource=<ファイル名> run

以下の<絶対パス/ファイル名>に任意のディレクトリのファイルを指定する。

sbt -Dconfig.file=<絶対パス/ファイル名> run

起動スクリプト(cmd/batなど)に代替ファイル指定がないでしょうか。あれば、その代替ファイルを変更すれば解決です。たとえ代替設定がないとしても、自分で代替ファイルを使ってみてうまくゆくならそれも良し。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/01/24 09:24 編集

    お世話になってます。
    以下のコマンドではエラーが出ました(´;ω;`)

    activator -Ddb.default.url="jdbc:mysql://localhost:3306/sample_db" run

    エラー内容は以下になります。
    https://github.com/nitta4706/Nitta/blob/master/error(20180124)
    何とか助けて下さい。

    キャンセル

  • 2019/01/24 13:35

    あと少しですね。システムプロパティが有効になりURLは認識されました。コネクションを確立する時にタイムゾーンエラーが起きています。これは解決可能でしょう。
    これでわっかったのは、application.confが正しく認識されないことです。Windowsの環境の問題でしょうか。application.confのエンコーディングは何ですか。UTF-8 BOMなしになっているか確認してください。UTF-8 BOM付きだとうまくいかないかもしれません。

    キャンセル

  • 2019/01/24 13:54

    タイムゾーンの問題は、mysqlドライバーのバグのようです。taketomaさんのURL指定をみてください。駄目な場合はドライバーをバージョンダウンすれば良いそうです。
    ついでですが、ドライバー名が変更になったという警告が出ています。
    db.default.drivaer=com.mysql.cj.jdbc.Driverにしてください。
    今、上の指定が誤っていることに気づきました。
    sbt -Ddb.default.driver=com.mysql.cj.jdbc.Driver \
    -Ddb.default.username=root \
    -Ddb.default.password="nfgwe4706" \
    -Ddb.default.url="jdbc:mysql://localhost:3306/sample_db" \
    run

    キャンセル

  • 2019/01/25 09:24

    返信ありがとうございます。
    見事に繋がりました。
    application.confのエンコードがUTF-8になってましたので
    BOMなしに変更し更に、
    default.driver=com.mysql.cj.jdbc.Driver
    default.username=root
    default.password="nfgwe4706"
    default.url="jdbc:mysql://localhost:3306/sample_db?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC"
    にし、ドライバー指定を変更することで繋がりました。
    takemoto様およびamdashlslaw様長くお付き合いいただきありがとうございました。
    本当に感謝します。
    今後とも宜しくお願いします。

    キャンセル

+1

環境が全く同じというわけではありませんが、
以下のようなconfの書き方でMySQLに接続できることは確認できました。

play.db {
  prototype {
  }
}
db{
  default.driver=com.mysql.jdbc.Driver
  default.username=root
  default.password="nfgwe4706"
  default.url="jdbc:mysql://localhost:3306/sample_db?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC"

}


hikaricpの設定は一旦おいといて上のようにしてみてください。
特に、db.default.jdbcUrlという項目で読み込まれることはありません。
db.default.urlが正しいです。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/01/24 09:12

    返信ありがとうございます。
    どうやら上記の方法でも駄目でした(泣)
    何とかなりませんでしょうか(泣)(泣)

    キャンセル

  • 2019/01/24 14:03

    エラーメッセージも同じですか?

    キャンセル

  • 2019/01/25 09:28 編集

    返信ありがとうございます。
    application.confファイルのエンコードをBOMなしにして、
    ドライバー指定を変更することで見事に繋がりました。
    本当にありがとうございました。
    長くお付き合い頂いたこと、本当に感謝しています。
    また、何かありましたら懲りずにお付き合いください!
    今後とも宜しくお願いします。
    今回は本当にありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.54%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる