如何从 play 2.4.6 连接 SQL Server

Posted

技术标签:

【中文标题】如何从 play 2.4.6 连接 SQL Server【英文标题】:How to connect SQL Server from play 2.4.6 【发布时间】:2016-04-27 14:47:14 【问题描述】:

我是 Play 框架的新手。 我从 play 2.4.6 连接 sql server 时遇到问题。

文件application.conf如下

db.default.url="jdbc:jtds:sqlserver://127.0.0.1:1433/DBNAME",
db.default.driver=net.sourceforge.jtds.jdbc.Driver,
db.default.user=sa,
db.default.pass=pass 

我在liblibexec 文件夹中添加了jtds-1.2.6 jar

build.sbt 文件如下。

libraryDependencies ++= Seq(
  javaJdbc,
  "net.sourceforge.jtds" % "jtds" % "1.2.6",
  cache,
  javaWs
)

fork in run := true

但是当我在http://localhost:9000/ 访问浏览器时出现以下错误

无法连接到数据库[默认]

请帮帮我。

以下是详细的例外:

! @700ahko28 - 内部服务器错误,用于 (GET) [/] -> 应用 -

play.api.Configuration$$anon$1: 配置错误[无法连接数据库[默认]] 在 play.api.Configuration$.configError(Configuration.scala:154) 在 play.api.Configuration.reportError(Configuration.scala:806) 在 play.api.db.DefaultDBApi$$anonfun$connect$1.apply(DefaultDBApi.scala:48) 在 play.api.db.DefaultDBApi$$anonfun$connect$1.apply(DefaultDBApi.scala:42) 在 scala.collection.immutable.List.foreach(List.scala:381) 在 play.api.db.DefaultDBApi.connect(DefaultDBApi.scala:42) 在 play.api.db.DBApiProvider.get$lzycompute(DBModule.scala:72) 在 play.api.db.DBApiProvider.get(DBModule.scala:62) 在 play.api.db.DBApiProvider.get(DBModule.scala:58) 在 com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:81) 原因:play.api.Configuration$$anon$1:配置错误[池初始化期间异常:HikariPool-0 - 连接不可用,请求在30001ms后超时。]

【问题讨论】:

检查完整的堆栈跟踪 我觉得application.conf中每一行末尾的逗号太多了。 【参考方案1】:

我在 IntelliJ 2016 中创建的新 Play!2 应用程序遇到了类似的问题。我从访问同一开发服务器的现有(旧)应用程序复制了配置,并且正在运行。但是当我在新项目中运行它时,它不再起作用并产生了非常相似的堆栈跟踪。

经过多次谷歌搜索和多种配置变化后,我发现了这个链接:https://github.com/brettwooldridge/HikariCP/issues/497。当我尝试添加以下内容时,他的 application.config 突然一切正常:

db.default.hikaricp.connectionTestQuery="SELECT 1"

【讨论】:

【参考方案2】:

要使用的正确属性是username 而不是userpassword 而不是pass

属性为here

此外,您的 application.conf 文件中不需要逗号。一旦您在libraryDependencies 中提到了jtds,您就不需要手动将它们放入lib 或其他地方。 SBT 会拉取它们并将它们放入类路径中。

【讨论】:

我按照你说的完成了所有设置,但是我得到了错误=> 内部服务器错误,对于 (GET) [/] -> play.api.Configuration$$anon$1: 配置错误[无法连接到数据库 [默认]] 它无法连接到数据库,请检查您的所有属性,如 url、用户名和密码.. 区分大小写。 它不工作。一切正常。我正在使用播放 2.5.3 版本。这个版本对这个版本好吗?我做错了吗?错误是 => ! @700aggpoj - 内部服务器错误,用于 (GET) [/] -> play.api.Configuration$$anon$1:配置错误[无法连接到数据库 [默认]] com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory .java:81) 您能提供整个异常跟踪吗?和你修改的 application.conf 您是否使用任何 sql 客户端(如 squirresql)进行了测试。另外,请尝试使用 localhost 而不是 127.0.0.1。我认为这是一个数据库设置/连接问题,而不是 Play 问题。

以上是关于如何从 play 2.4.6 连接 SQL Server的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Google Play 服务通知中检测意图

如何计算 SQL 中两个 SELECT 的差异(Access、JetSQL)

玩 2.4.6,配置测试中字节码增强的构建设置

使用ScalaTest和Selenium测试Scala.JS + Play

如何使用 Play Framework 显示 SQL?

如何使用scala Play2.6从数据库中选择单列