回答:
見てくださいこのページプレイのドキュメントから。それは言う:
Play 2.0は、主に開発モードで有用なh2インメモリデータベースを除いて、データベースドライバーを提供しません。したがって、運用環境で展開するには、データベースドライバーをアプリケーションの依存関係として追加する必要があります。
たとえば、MySQL5を使用する場合、コネクタの依存関係を追加する必要があります。
val appDependencies = Seq(
// Add your project dependencies here,
...
"mysql" % "mysql-connector-java" % "5.1.18"
...
)
SBTがドライバーをダウンロードします。依存関係の管理に関するセクションも確認してください。
MySQLに接続するには、次の設定も変更する必要がありますapplication.conf
。
db.default.driver=com.mysql.jdbc.Driver
db.default.url="mysql://root:secret@localhost/myDatabase"
Carstenが書いたように、ドキュメントから取得できますが、ここに要約があります:
依存関係が構成されていることを確認してください /project/Build.scala
val appDependencies = Seq(
// Add your project dependencies here,
"mysql" % "mysql-connector-java" % "5.1.18"
)
DBの適切な構成を追加します(デフォルトのH2構成を置き換えます)。 /conf/application.conf
。
(URLからエンコーディングを削除しないでください):
db.default.driver=com.mysql.jdbc.Driver
db.default.url="jdbc:mysql://localhost/your_db_name?characterEncoding=UTF-8"
db.default.user=your_login
db.default.password=your_pass
同じファイルで、この行がコメント化されていないことを確認してください。
ebean.default="models.*"
これですべてです。アプリを再起動(または開発モードで実行)すると、DDLが作成され、適用するように求められます。
localhost
、に置き換える必要があることを確認すること127.0.0.1
です。specifictの用語では、使用してMariaDB MacPortsのIから(MySQL用の交換でのOracleフリードロップ)はコメントアウトしなければならなかったスキップ・ネットワーキングではmy.cnf
、代わりのIPアドレスを使用してlocalhost
正常に接続を再生する必要があります。
私はplay 2.2.0を使用しており、プロジェクトのルートフォルダーにあるbuild.sbtに次の行を追加する必要がありました。
"mysql" % "mysql-connector-java" % "5.1.27"
そしてplayは自動的にドライバーをダウンロードします。Build.scalaはもう必要ないようです。上記の解説者が述べたように、application.confへの変更を適用する必要があります。
libraryDependencies ++= Seq(jdbc,anorm,cache,"mysql" % "mysql-connector-java" % "5.1.27")
私が遭遇したmysqlデータベースにアクセスする方法のほとんどは、接続を確立してモデル内からデータを取得する方法を説明していません。私のアプリケーションでは、mongoDBと外部mysqlデータベースの両方を使用しています。だからここに私が(mysql側の)ことをした方法があります:
Play 2.3.3の場合、build.sbtファイルで、libraryDependenciesにmysql固有の行を追加します。
libraryDependencies ++= Seq(
"mysql" % "mysql-connector-java" % "5.1.27"
)
/conf/application.confファイルに次を追加します:
db.myotherdb.driver = com.mysql.jdbc.Driver
db.myotherdb.url = "jdbc:mysql://xxx.xxx.xxx.xxx/NameOfOtherDB?characterEncoding=UTF-8"
db.myotherdb.user = MyOtherDbUSername
db.myotherdb.password = MyOtherDbPass
デフォルトのデータベースを使用したい場合、または使用したい他の名前で使用したい場合は、「myotherdb」を「デフォルト」に置き換えることができます。「xxx.xxx.xxx.xxx」を、データベースが配置されているサーバーのIPアドレス(外部データベースの場合)またはローカルデータベースの場合はlocalhost(または127.0.0.1)に置き換えます。「NameOfOtherDB」を使用するデータベースの名前に、「MyOtherDbUSername」をデータベースのユーザー名に、「MyOtherDbPass」をデータベースのパスワードに置き換えます。
モデル(/app/models/MyModel.scala)内に次を追加します。
val connection = DB.getConnection("myotherdb")
ステートメントとクエリを作成して実行します。
val statement = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY)
val query = "SELECT * FROM myTableName"
val resultset = statement.executeQuery(query)
その後、取得したデータを使用して実行したい処理を続行できます。例えば:
while (resultset.next()) {
resultset.getString("columnName")
}
ここで、「columnName」は、取得するDBテーブルの列/フィールドの名前です。
最後に重要なことですが、close()を呼び出して接続を閉じることをお勧めします。
これが見つかるまで、MySQLの設定にこだわっていました。
@biesiorの回答から取られた最も重要なこと:
/project/Build.scala
)play dependencies
新しく追加されたMySQLコネクター/ J依存関係を解決するためにしますebean.default="models.*"
db.default.driver=com.mysql.jdbc.Driver
db.default.url="jdbc:mysql://www.sample.com:3306/test?characterEncoding=UTF-8"
db.default.user=playuser
db.default.pass=playuser
それは私の日を救った。
以下のためにプレー2.3.1、次の手順に従います。
1)プロジェクトの依存関係(/project/build.sbt内にあります)にMySQLコネクター/ Jを追加します
libraryDependencies ++= Seq( javaJdbc, javaEbean, "mysql" % "mysql-connector-java" % "5.1.29"
2)デフォルトのebean構成行のコメントを外しますebean.default = "models。*"
3)適切な文字エンコーディングでMySQLデータベースを正しく設定します
db.default.driver=com.mysql.jdbc.Driver //this is com. and not org.
db.default.url="jdbc:mysql://127.0.0.1/test?characterEncoding=UTF-8"
db.default.user=playuser
db.default.pass=playuser
4)ほとんどのインプ。コンソールでreloadコマンドを実行します。
java.sql.SQLException: No suitable driver found for mysql://...
。
sudo apt-get install mysql-client; sudo apt-get install libmysql-java
putでインストールしてexport CLASSPATH=/usr/share/java/mysql-connector-java.jar
追加しました/etc/environment
(help.ubuntu.com/community/JDBCAndMySQLで説明されています)。それでも動作しません。
以前のすべての回答からの情報の断片をつなぎ合わせることで、これを機能させることができました。だからここに別のものがあります、それはうまくいけばもっと最新のものであるか、同様の環境を持つ人々にとって有用です。
環境詳細:(これは私が使っているものです)
appication.conf
db.default.driver=com.mysql.jdbc.Driver
db.default.url="jdbc:mysql://localhost:3306/testSchema?characterEncoding=UTF-8"
db.default.user=yourDBUserName
db.default.password=yourDBUserPass
注意:
3306
は通常MYSQLのデフォルトであるため、この例を使用しました。build.sbt
以下の行をbuild.sbtファイルに追加します。これはlibraryDependencies ++= Seq()
宣言の後に行ってください。
libraryDependencies += "mysql" % "mysql-connector-java" % "5.1.36"
最後に
activator reload
アクティベーター1.3.6を搭載した最新のPlayフレームワーク2.4.xでも同じ問題が発生しました。
手順は次のとおりです。ここで説明されている手順に従いましたhttps://www.playframework.com/documentation/2.4.x/JavaDatabase
これが私の application.conf
# MySQL DB Configuration
db.default.driver=com.mysql.jdbc.Driver
db.default.url="jdbc:mysql://{hostname or ipaddres}/{db name}?characterEncoding=UTF-8"
db.default.username=username // Note that user id deprecated, instead use username. Though that is not a major issue
db.default.password="password"
# JPA Configurations
jpa.default=defaultPersistenceUnit
PlayKeys.externalizeResources = false
# JavaEbean configuration
ebean.default = ["models.*"]
ここは build.sbt
libraryDependencies ++= Seq(
javaJdbc,
cache,
javaWs,
javaJpa,
evolutions,
"mysql" % "mysql-connector-java" % "5.1.27"
)
plugins.sbt
// The Play plugin
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.4.3")
// Web plugins
addSbtPlugin("com.typesafe.sbt" % "sbt-coffeescript" % "1.0.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-less" % "1.0.6")
addSbtPlugin("com.typesafe.sbt" % "sbt-jshint" % "1.0.3")
addSbtPlugin("com.typesafe.sbt" % "sbt-rjs" % "1.0.7")
addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.1.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-mocha" % "1.1.0")
// 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(SbtEbean). Note, uncommenting this line will automatically bring in
// Play enhancer, regardless of whether the line above is commented out or not.
addSbtPlugin("com.typesafe.sbt" % "sbt-play-ebean" % "1.0.0")
ここに重要なステップがあります。
上記の手順を設定した後、コマンドラインに移動してアクティベーターを停止し、コマンドを実行し
activator run
ます。私の状況では、エラーが発生し続けましたunable to find mysql drivers
。を実行した後activator run
、アクティベーターは実際にMySQLドライバーをダウンロードし、依存関係を解決します。それが私の問題を解決した重要なステップです。
この作業では、次の行を依存関係に追加します。
"mysql" % "mysql-connector-java" % "5.1.36"
これがコードです:
import java.sql.Connection
val driver = "com.mysql.jdbc.Driver"
val url = "jdbc:mysql://localhost/world"
val username = "root"
val password = "root"
var connection: Connection = null
try {
// make the connection
Class.forName(driver)
connection = DriverManager.getConnection(url, username, password)
// create the statement, and run the select query
val statement = connection.createStatement()
val resultSet = statement.executeQuery("SELECT id , name FROM bar")
val sql: SqlQuery = SQL("select * from products order by name asc")
while (resultSet.next()) {
val id = resultSet.getString("id")
val name = resultSet.getString("name")
println(id, name)
}
} catch {
case e: Exception => println("exception caught: " + e);
}
connection.close()