Spójrz na tę stronę w dokumentacji Play. To mówi:
Poza bazą danych w pamięci h2, przydatną głównie w trybie programistycznym, Play 2.0 nie udostępnia żadnych sterowników do bazy danych. W związku z tym, aby wdrożyć w środowisku produkcyjnym, musisz dodać sterownik bazy danych jako zależność aplikacji.
Na przykład, jeśli używasz MySQL5, musisz dodać zależność dla łącznika:
val appDependencies = Seq(
...
"mysql" % "mysql-connector-java" % "5.1.18"
...
)
SBT pobierze dla Ciebie sterownik. Powinieneś również zapoznać się z sekcją dotyczącą zarządzania zależnościami .
Aby połączyć się z MySQL, musisz również zmienić niektóre ustawienia w application.conf
:
db.default.driver=com.mysql.jdbc.Driver
db.default.url="mysql://root:secret@localhost/myDatabase"
Jak napisał Carsten, można to pobrać z dokumentacji, jednak oto podsumowanie:
upewnij się, że masz skonfigurowaną zależność w programie
/project/Build.scala
val appDependencies = Seq( // Add your project dependencies here, "mysql" % "mysql-connector-java" % "5.1.18" )
Dodaj odpowiednią konfigurację DB (zastąp domyślną konfigurację H2) w
/conf/application.conf
:(nie usuwaj kodowania z adresu 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
w tym samym pliku znajdź i upewnij się, że ta linia NIE jest komentowana:
ebean.default="models.*"
To wszystko, uruchom ponownie aplikację (lub uruchom w trybie deweloperskim), a następnie utworzy DDL i poprosi Cię o zastosowanie.
źródło
localhost
mogą wymagać zastąpienia127.0.0.1
. Pod względem specifict, stosując MariaDB (Oracle wolne spadek zamiennik dla MySQL) z DarwinPorts musiałem wypowiedzieć się skip-networking wmy.cnf
i użyć adresu IP zamiastlocalhost
mieć Zagraj powodzeniem connect.Używam play 2.2.0 i po prostu musiałem dodać następujący wiersz do pliku build.sbt w folderze głównym projektu.
"mysql" % "mysql-connector-java" % "5.1.27"
A gra automatycznie pobiera sterownik. Wygląda na to, że Build.scala nie jest już do tego potrzebna. Zmiany w pliku application.conf należy zastosować, tak jak wspomnieli powyżsi komentatorzy.
źródło
libraryDependencies ++= Seq(jdbc,anorm,cache,"mysql" % "mysql-connector-java" % "5.1.27")
Większość metod dostępu do bazy danych mysql, z którymi się spotkałem, nie wyjaśnia, jak nawiązać połączenie i pobrać dane z modelu. W mojej aplikacji używam zarówno mongoDB, jak i zewnętrznej bazy danych mysql. Oto jak zrobiłem (strona mysql) rzeczy:
W przypadku Play 2.3.3 w pliku build.sbt dodaj wiersz specyficzny dla mysql w bibliotece
libraryDependencies ++= Seq( "mysql" % "mysql-connector-java" % "5.1.27" )
W pliku /conf/application.conf dodaj to:
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
Możesz zamienić „myotherdb” na „default” w przypadku, gdy chcesz użyć domyślnej bazy danych lub z jakąkolwiek inną nazwą, której chcesz użyć. Zastąp „xxx.xxx.xxx.xxx” adresem IP serwera, na którym znajduje się Twoja baza danych (w przypadku zewnętrznej bazy danych) lub localhost (lub 127.0.0.1) dla lokalnej bazy danych. Zastąp „NameOfOtherDB” nazwą bazy danych, której chcesz użyć, „MyOtherDbUSername” nazwą użytkownika bazy danych, a „MyOtherDbPass” hasłem bazy danych.
Wewnątrz swojego modelu (/app/models/MyModel.scala) dodaj to:
val connection = DB.getConnection("myotherdb")
Utwórz instrukcję, zapytanie i wykonaj je:
val statement = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY) val query = "SELECT * FROM myTableName" val resultset = statement.executeQuery(query)
Następnie możesz kontynuować wszystko, co chcesz zrobić z pobranymi danymi. Na przykład:
while (resultset.next()) { resultset.getString("columnName") }
Gdzie „nazwa_kolumny” to nazwa kolumny / pola tabeli bazy danych, które chcesz pobrać.
Na koniec chciałbym zauważyć, że możesz chcieć zamknąć połączenie, wywołując close ()
źródło
Utknąłem z moją konfiguracją MySQL, dopóki tego nie znalazłem.
Najważniejsze rzeczy zaczerpnięte z odpowiedzi @biesior:
/project/Build.scala
)play dependencies
aby rozwiązać nowo dodaną zależność łącznika MySQL / Jebean.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
To uratowało mi dzień.
źródło
W przypadku gry 2.3.1 wykonaj następujące kroki.
1) Dodaj złącze MySQL / J w zależności projektu (która znajduje się w /project/build.sbt)
libraryDependencies ++= Seq( javaJdbc, javaEbean, "mysql" % "mysql-connector-java" % "5.1.29"
2) Usuń komentarz z domyślnej linii konfiguracyjnej ebean ebean.default = "models. *"
3) Skonfiguruj poprawnie bazę danych MySQL z odpowiednim kodowaniem znaków
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) Większość Imp. Uruchom polecenie przeładowania w konsoli.
źródło
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
a także dodałem/etc/environment
(jak opisano na help.ubuntu.com/community/JDBCAndMySQL ). Nadal nie działa.Zagraj w 2.4.3 i MYSQL 5.7.9
Udało mi się to osiągnąć, łącząc razem fragmenty informacji ze wszystkich poprzednich odpowiedzi. Oto kolejny, miejmy nadzieję, bardziej aktualny lub przydatny dla osób w podobnym środowisku.
Szczegóły środowiska: ( właśnie tego używam )
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
Uwaga:
3306
przykład, ponieważ jest to zwykle domyślne ustawienie dla MYSQL.build.sbt
Dodaj tę linię poniżej do pliku build.sbt. Powinno to nastąpić po
libraryDependencies ++= Seq()
deklaracji.libraryDependencies += "mysql" % "mysql-connector-java" % "5.1.36"
Wreszcie
activator reload
źródło
Do odtwarzania projektu java przy użyciu SBT
Zmień LibraryDependency na llok, jak to w "build.sbt"
libraryDependencies ++= Seq( javaJdbc, javaEbean, cache, javaWs, "mysql" % "mysql-connector-java" % "5.1.27" )
Uruchom swój projekt za pomocą „uruchomienia aktywatora”
Play spowoduje wyłączenie wymaganego złącza JDBC.
źródło
Miałem ten sam problem w najnowszym frameworku gry 2.4.x z aktywatorem 1.3.6.
Oto kroki. Wykonałem czynności opisane tutaj https://www.playframework.com/documentation/2.4.x/JavaDatabase
Tutaj jest mój
application.conf
Tutaj jest
build.sbt
plugins.sbt
Oto ważny krok.
źródło
Dla mnie ta praca, dodaj poniższą linię do swoich zależności:
"mysql" % "mysql-connector-java" % "5.1.36"
Oto kod:
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()
źródło