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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Play Framework 2

Play Framework 2はPlayのメジャーバージョンです。現代の web アプリケーション開発に必要なコンポーネント及び API を統合した生産性の高い Java と Scala の web アプリケーションフレームワークです。

Q&A

解決済

2回答

3849閲覧

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

Nitta

総合スコア96

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Play Framework 2

Play Framework 2はPlayのメジャーバージョンです。現代の web アプリケーション開発に必要なコンポーネント及び API を統合した生産性の高い Java と Scala の web アプリケーションフレームワークです。

0グッド

0クリップ

投稿2019/01/22 00:39

編集2019/01/22 00:55

お世話になってます。
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} } }

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kunai

2019/01/22 01:01

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

2019/01/22 02:58 編集

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

回答2

0

ベストアンサー

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

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

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

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

bash

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

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

bash

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

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

代替application.conf

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

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

bash

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

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

bash

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

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

投稿2019/01/23 09:43

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/01/24 04:35

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

退会済みユーザー

2019/01/24 04: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
Nitta

2019/01/25 00: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様長くお付き合いいただきありがとうございました。 本当に感謝します。 今後とも宜しくお願いします。
guest

0

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

conf

1play.db { 2 prototype { 3 } 4} 5db{ 6 default.driver=com.mysql.jdbc.Driver 7 default.username=root 8 default.password="nfgwe4706" 9 default.url="jdbc:mysql://localhost:3306/sample_db?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC" 10 11}

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

投稿2019/01/22 03:28

編集2019/01/22 08:17
taketoma

総合スコア374

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Nitta

2019/01/22 07:00

返信有難うございます。 実際内容を上記のように変更しましたが、 上手く行きませんでした。
taketoma

2019/01/22 08:18

これでどうでしょうか。
Nitta

2019/01/24 00:12

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

2019/01/24 05:03

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

2019/01/25 00:29 編集

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問