Kroki potrzebne do korzystania z bazy danych MySQL Z Play framework 2.0

Jestem nowy w Play framework. Próbuję skonfigurować bazę danych MySQL jako źródło danych do użycia z Play Ebeans.

Czy mógłby ktoś wyjaśnić kroki potrzebne do skonfigurowania MySQL Z Play 2.0 framework (jak, pobieranie sterowników, dodawanie zależności itp).

Author: biesior, 2012-04-04

10 answers

Spójrz na tę stronę z dokumentacji Play. Pisze:

Poza pamięciową bazą danych H2, przydatną głównie w trybie deweloperskim, Play 2.0 nie dostarcza żadnych sterowników do bazy danych. W związku z tym, aby wdrożyć w produkcji, będziesz musiał dodać sterownik bazy danych jako zależność od aplikacji.

Na przykład, jeśli używasz MySQL5, musisz dodać zależność dla złącza:

val appDependencies = Seq(
    // Add your project dependencies here,
    ...
    "mysql" % "mysql-connector-java" % "5.1.18"
    ...
)

SBT pobierze sterownik dla Ciebie. Powinieneś zapoznaj się również z sekcją dotyczącą zarządzania zależnościami .

Aby połączyć się z MySQL, musisz również zmienić niektóre ustawienia w swoim application.conf:

db.default.driver=com.mysql.jdbc.Driver
db.default.url="mysql://root:secret@localhost/myDatabase"
 99
Author: Carsten,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-04 11:04:30

Jak napisał Carsten, można go pobrać z dokumentacji, jednak oto podsumowanie:

Upewnij się, że masz skonfigurowaną zależność w /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 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 dev), a następnie utworzy DDL i poprosi o zastosowanie go.

 92
Author: biesior,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-04 17:16:44

Używam play 2.2.0 i po prostu musiałem dodać następujący wiersz do budowania.sbt w głównym folderze projektu.

  "mysql" % "mysql-connector-java" % "5.1.27"

I play automatycznie pobiera sterownik. Wygląda na zbudowaną.scala nie jest już do tego potrzebna. Zmiany w aplikacji.conf powinien być stosowany tak, jak wspomniali wyżej komentatorzy.

 8
Author: jrook,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-12 09:22:05

Większość metod uzyskiwania dostępu do bazy danych mysql, z którą się zetknął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 (po stronie mysql) rzeczy:

  1. Do Play 2.3.3, w kompilacji.plik sbt dodaj linię mysql w bibliotece:

    libraryDependencies ++= Seq(
        "mysql" % "mysql-connector-java" % "5.1.27"
    )
    
  2. W /conf / application.Dodaj plik conf 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 zastąpić " myotherdb "przez" default " w przypadku, gdy chcesz użyć domyślnej bazy danych lub innej nazwy, 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. Zamień "NameOfOtherDB" na nazwę bazy danych, której chcesz użyć, "MyOtherDbUSername" z nazwą użytkownika bazy danych i "MyOtherDbPass" z bazą danych hasło.

  3. Wewnątrz Twojego modelu (/app/models / MyModel.scala) dodaj to:

    val connection = DB.getConnection("myotherdb")
    
  4. 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)
    
  5. Następnie możesz kontynuować, co chcesz zrobić z pobranymi danymi. Na przykład:

    while (resultset.next()) {
        resultset.getString("columnName")
    }
    

    Gdzie "columnName" jest nazwą kolumny/pola tabeli DB, które chcesz pobrać.

Na koniec chciałbym zauważyć, że może zechcesz zamknąć połączenie przez wywołanie Zamknij()

 7
Author: consuela,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-21 11:35:04

Utknąłem z moją konfiguracją MySQL, dopóki nie znalazłem tego.

Najważniejsze rzeczy wzięte z @ biesior odpowiedź:

  • Dodaj MySQL connector / J w zależności projektu (która jest wewnątrz /project/Build.scala)
  • po dodaniu zależności uruchom play dependencies, aby rozwiązać nowo dodane Złącze MySQL / J zależność
  • Uncomment default ebean configuration line ebean.default="models.*"
  • poprawnie Skonfiguruj bazę danych MySQL z odpowiednim kodowaniem znaków 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 mój dzień.
 5
Author: ck1910,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-19 00:41:04

W przypadku gry 2.3.1 wykonaj następujące czynności.

1) Dodaj MySQL connector / J w zależności projektu (która jest wewnątrz / project / build.sbt)

libraryDependencies ++= Seq( javaJdbc, javaEbean, "mysql" % "mysql-connector-java" % "5.1.29"

2) odkomentuj domyślną linię konfiguracji ebean ebean.default = " models.*"

3) poprawnie Skonfiguruj 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 reload w konsoli.

 3
Author: working,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-27 00:56:30

Play 2.4.3 & MYSQL 5.7.9

Udało mi się to osiągnąć, łącząc fragmenty informacji ze wszystkich poprzednich odpowiedzi. Więc oto kolejny, który, miejmy nadzieję, jest bardziej aktualny lub przydatny dla osób z podobnym środowiskiem.

Szczegóły dotyczące środowiska: (to jest to, czego używam )

  • Play 2.4.3 to pochodzi z aktywator-1.3.7-minimal
  • JDK8, powinieneś już to mieć, ponieważ nie sądzę, aby ta wersja play współpracuje z JDK7
  • MYSQL 5.7.9

Aplikacja.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:

  • testSchema w adresie URL jest nazwa bazy danych, jeśli używasz czegoś takiego jak MYSQL workbench zobaczysz to wymienione w sekcji SCHEMAS. Nazwałem swój testSchema. Inni mogą to nazwać czymś w rodzaju "myDatabase" [21]}
  • port powinien być portem MYSQL. Nie twój port aplikacji. Wstawiam 3306 w przykładzie, ponieważ jest to zazwyczaj domyślne dla MYSQL.

Buduj.sbt

Dodaj tę linię poniżej do swojej kompilacji.plik sbt. Powinno to nastąpić po deklaracji libraryDependencies ++= Seq().

libraryDependencies += "mysql" % "mysql-connector-java" % "5.1.36"

Wreszcie

  • uruchom to polecenie z katalogu głównego projektu - > activator reload
  • uruchom ponownie aplikację
 3
Author: Kris Hollenbeck,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-09 18:21:12

Do odtwarzania projektu java przy użyciu SBT

Zmień bibliotekę na taką w "build.sbt "

libraryDependencies ++= Seq(
  javaJdbc,
  javaEbean,
  cache,
  javaWs,
  "mysql" % "mysql-connector-java" % "5.1.27"
)

Uruchom swój projekt za pomocą "Activator run"

Play wyłączy wymagane złącze jdbc.

 0
Author: Anand Kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-25 06:41:29

Miałem ten sam problem w najnowszym frameworku play 2.4.x z aktywatorem 1.3.6.

Oto kroki. Wykonałem kroki opisane tutaj https://www.playframework.com/documentation/2.4.x/JavaDatabase

Oto mój 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.*"]

Oto 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")
Oto ważny krok.

Po skonfigurowaniu powyższych kroków przejdź do wiersza poleceń, zatrzymaj aktywator i uruchom polecenie activator run. W mojej sytuacji ciągle dostawałem błąd unable to find mysql drivers. Po uruchomieniu activator run, aktywator pobierze sterowniki MySQL i rozwiąże zależności. To jest ważny krok, który rozwiązał mój problem.

 0
Author: Manjunath Reddy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-14 08:26:34
For me this work ,Add this below line into your Dependencies

**"mysql" % "mysql-connector-java" % "5.1.36"**


So , here is the code

      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()
 0
Author: SwapnilShirke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-12 07:58:39