PlayFrameworkは初めてです。PlayEbeansで使用するデータソースとしてMySQLデータベースを構成しようとしています。
Play 2.0フレームワークを使用してMySQLを構成するために必要な手順(ドライバーのダウンロード、依存関係の追加など)について説明してください。
PlayFrameworkは初めてです。PlayEbeansで使用するデータソースとしてMySQLデータベースを構成しようとしています。
Play 2.0フレームワークを使用してMySQLを構成するために必要な手順(ドライバーのダウンロード、依存関係の追加など)について説明してください。
Playのドキュメントからこのページを見てください。それは言う:
主に開発モードで役立つh2インメモリデータベースを除いて、Play2.0はデータベースドライバを提供しません。したがって、本番環境にデプロイするには、データベースドライバーをアプリケーションの依存関係として追加する必要があります。
たとえば、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 が作成され、適用するよう求められます。
私は play 2.2.0 を使用していますが、プロジェクトのルート フォルダーにある build.sbt に次の行を追加する必要がありました。
"mysql" % "mysql-connector-java" % "5.1.27"
Play は自動的にドライバーをダウンロードします。これには Build.scala はもう必要ないようです。上記のコメンテーターが言及したように、application.conf への変更を適用する必要があります。
私が遭遇した 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」を「default」に置き換えるか、使用したい他の名前に置き換えることができます。「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
プロジェクトの依存関係 ( 内にあります)に MySQL コネクタ/J を追加します。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
それは私の日を救った。
以前のすべての回答からの情報をつなぎ合わせることで、これを機能させることができました。したがって、ここに別のものがあります。うまくいけば、より最新のものであるか、同様の環境を持つ人に役立ちます。
環境の詳細: (これは私が使用しているものです)
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
play 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コマンドを実行します。
私にとって、この作業は、以下の行を依存関係に追加します。
"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()