Lihat halaman ini dari dokumentasi Play. Ia mengatakan:
Selain untuk database dalam memori h2, sebagian besar berguna dalam mode pengembangan, Play 2.0 tidak menyediakan driver database apa pun. Akibatnya, untuk menerapkan dalam produksi, Anda harus menambahkan driver database Anda sebagai dependensi aplikasi.
Misalnya, jika Anda menggunakan MySQL5, Anda perlu menambahkan ketergantungan untuk konektor:
val appDependencies = Seq(
...
"mysql" % "mysql-connector-java" % "5.1.18"
...
)
SBT akan mengunduh driver untuk Anda. Anda juga harus memeriksa bagian tentang mengelola dependensi .
Untuk terhubung ke MySQL, Anda juga perlu mengubah beberapa pengaturan di application.conf
:
db.default.driver=com.mysql.jdbc.Driver
db.default.url="mysql://root:secret@localhost/myDatabase"
Seperti yang ditulis Carsten, itu dapat diambil dari dokumentasi, namun berikut ringkasannya:
pastikan Anda memiliki dependensi yang dikonfigurasi di
/project/Build.scala
val appDependencies = Seq( // Add your project dependencies here, "mysql" % "mysql-connector-java" % "5.1.18" )
Tambahkan konfigurasi DB yang tepat (ganti konfigurasi H2 default) di
/conf/application.conf
:(jangan hapus encoding dari 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
di file yang sama temukan dan pastikan baris ini TIDAK diberi komentar:
ebean.default="models.*"
Itu saja, mulai ulang aplikasi Anda (atau jalankan dalam mode pengembang), lalu itu akan membuat DDL dan meminta Anda untuk menerapkannya.
sumber
localhost
mungkin perlu diganti127.0.0.1
. Dalam hal specifict, menggunakan MariaDB (penurunan Oracle bebas di pengganti MySQL) dari MacPorts saya harus komentar keluar skip-networking dimy.cnf
dan menggunakan alamat IP bukanlocalhost
untuk memiliki Bermain berhasil connect.Saya menggunakan play 2.2.0 dan saya hanya perlu menambahkan baris berikut ke build.sbt di folder root proyek.
"mysql" % "mysql-connector-java" % "5.1.27"
Dan bermain secara otomatis mengunduh driver. Sepertinya Build.scala tidak diperlukan untuk ini lagi. Perubahan pada application.conf harus diterapkan seperti yang telah disebutkan oleh komentator di atas.
sumber
libraryDependencies ++= Seq(jdbc,anorm,cache,"mysql" % "mysql-connector-java" % "5.1.27")
Sebagian besar metode mengakses database mysql yang saya temui tidak menjelaskan cara membuat koneksi dan mengambil data dari dalam Model. Dalam aplikasi saya, saya menggunakan mongoDB dan database mysql eksternal. Jadi, inilah cara saya melakukan (sisi mysql) hal-hal:
Untuk Play 2.3.3, di file build.sbt tambahkan baris spesifik mysql di libraryDependencies:
libraryDependencies ++= Seq( "mysql" % "mysql-connector-java" % "5.1.27" )
Di file /conf/application.conf tambahkan ini:
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
Anda dapat mengganti "myotherdb" dengan "default" jika Anda ingin menggunakan database default atau dengan nama lain yang ingin Anda gunakan. Ganti "xxx.xxx.xxx.xxx" dengan alamat IP server tempat database Anda berada (dalam kasus database eksternal) atau localhost (atau 127.0.0.1) untuk database lokal. Ganti "NameOfOtherDB" dengan nama database yang ingin Anda gunakan, "MyOtherDbUSername" dengan nama pengguna database Anda dan "MyOtherDbPass" dengan kata sandi database Anda.
Di dalam Model Anda (/app/models/MyModel.scala) tambahkan ini:
val connection = DB.getConnection("myotherdb")
Buat pernyataan, kueri dan jalankan:
val statement = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY) val query = "SELECT * FROM myTableName" val resultset = statement.executeQuery(query)
Kemudian Anda dapat melanjutkan apa pun yang ingin Anda lakukan dengan data yang diambil. Sebagai contoh:
while (resultset.next()) { resultset.getString("columnName") }
Di mana "nama kolom" adalah nama kolom / bidang tabel DB yang ingin Anda ambil.
Last but not least, saya ingin mencatat bahwa Anda mungkin ingin menutup koneksi dengan memanggil close ()
sumber
Terjebak dengan konfigurasi MySQL saya sampai saya menemukan ini.
Hal terpenting yang diambil dari jawaban @biesior:
/project/Build.scala
)play dependencies
untuk menyelesaikan konektor MySQL / dependensi J yang baru ditambahkanebean.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
Ini menyelamatkan hari saya.
sumber
Untuk bermain 2.3.1 , Ikuti langkah-langkah ini.
1) Tambahkan konektor MySQL / J di ketergantungan proyek (yang ada di dalam /project/build.sbt)
libraryDependencies ++= Seq( javaJdbc, javaEbean, "mysql" % "mysql-connector-java" % "5.1.29"
2) Hapus komentar baris konfigurasi ebean default ebean.default = "model. *"
3) Konfigurasi database MySQL dengan benar dengan pengkodean karakter yang tepat
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) Kebanyakan Imp. Jalankan perintah muat ulang di konsol.
sumber
java.sql.SQLException: No suitable driver found for mysql://...
.sudo apt-get install mysql-client; sudo apt-get install libmysql-java
putexport CLASSPATH=/usr/share/java/mysql-connector-java.jar
dan juga menambahkannya ke/etc/environment
(seperti yang dijelaskan di help.ubuntu.com/community/JDBCAndMySQL ). Itu masih tidak berhasil.Mainkan 2.4.3 & MYSQL 5.7.9
Saya bisa mendapatkan ini bekerja dengan mengumpulkan potongan-potongan info dari semua jawaban sebelumnya. Jadi ini satu lagi, yang semoga lebih up-to-date atau berguna bagi mereka yang memiliki lingkungan serupa.
Detail Lingkungan: ( inilah yang saya gunakan )
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
catatan:
3306
contoh karena itu biasanya default untuk MYSQL.build.sbt
Tambahkan baris di bawah ini ke file build.sbt Anda. Ini harus dilakukan setelah
libraryDependencies ++= Seq()
deklarasi.libraryDependencies += "mysql" % "mysql-connector-java" % "5.1.36"
Akhirnya
activator reload
sumber
Untuk memainkan proyek java Menggunakan SBT
Ubah libraryDependency menjadi llok seperti ini di "build.sbt"
libraryDependencies ++= Seq( javaJdbc, javaEbean, cache, javaWs, "mysql" % "mysql-connector-java" % "5.1.27" )
Jalankan proyek Anda menggunakan "aktivator run"
Putar akan menurunkan konektor jdbc yang diperlukan.
sumber
Saya memiliki masalah yang sama dalam kerangka bermain 2.4.x terbaru dengan aktivator 1.3.6.
Berikut langkah-langkahnya. Saya mengikuti langkah-langkah yang dijelaskan di sini https://www.playframework.com/documentation/2.4.x/JavaDatabase
Ini milikku
application.conf
Disini adalah
build.sbt
plugins.sbt
Inilah langkah penting.
sumber
Bagi saya pekerjaan ini, tambahkan baris di bawah ini ke dalam dependensi Anda:
"mysql" % "mysql-connector-java" % "5.1.36"
Ini kodenya:
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()
sumber