Answers:
从Play的文档中查看此页面。它说:
除了适用于h2内存数据库(主要在开发模式下使用)之外,Play 2.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"
)
在以下位置添加适当的数据库配置(替换默认的H2配置)/conf/application.conf
:
(请勿从网址中删除编码):
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的(置换于Oracle的自由跌落为MySQL),我不得不注释掉跳网络中my.cnf
,使用IP地址而不是localhost
有玩连接成功。
我正在使用play 2.2.0,我只需要在项目的根文件夹中添加以下行build.sbt。
"mysql" % "mysql-connector-java" % "5.1.27"
并自动播放下载驱动程序。看来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”替换为“ 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”是您要检索的数据库表列/字段的名称。
最后但并非最不重要的一点,我想指出您可能想通过调用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)在项目的依赖项中添加MySQL Connector / J(位于/project/build.sbt内部)
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)大多数展示。在控制台中运行重新加载命令。
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
使用SBT播放Java项目
在“ build.sbt”中将libraryDependency更改为llok
libraryDependencies ++= Seq(
javaJdbc,
javaEbean,
cache,
javaWs,
"mysql" % "mysql-connector-java" % "5.1.27"
)
使用“激活器运行”运行项目
播放将关闭所需的jdbc连接器。
我在带有激活器1.3.6的最新播放框架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()