【发布时间】:2015-11-06 10:05:57
【问题描述】:
我正在尝试开始玩游戏。
策略;从激活器教程中获取 hello-slick-3.1 项目。
如果内存数据库中的 H2 工作正常。我想连接到一个 sql server。经过一场战斗,我有一些配置似乎可以使用 jdts 进行连接。
在应用程序.conf中
driver=net.sourceforge.jtds.jdbc.Driver
url="jdbc:jtds:sqlserver://%%%%:1433;databaseName=%%%%;user=%%%;password=%%%%%"
这是使用 jtds 驱动而不是
com.typesafe.slick.driver.ms.SQLServerDriver
这似乎是故意难以使用的。我还没有找到一个成功的配置。 JTDS 设法根据它的模式创建“供应商”表,但所有后续请求都因模糊的“数据截断”消息而失败;
object HelloSlick extends App {
val db = Database.forConfig("sqlServerLocal")
try {
// The query interface for the Suppliers table
val suppliers: TableQuery[Suppliers] = TableQuery[Suppliers]
val setupAction: DBIO[Unit] = DBIO.seq(
// Create the schema by combining the DDLs for the Suppliers and Coffees
// tables using the query interfaces
//(suppliers.schema).create,
// Insert some suppliers
suppliers += (101, "Acme, Inc.", "99 Market Street", "Groundsville", "CA", "95199"),
suppliers += ( 49, "Superior Coffee", "1 Party Place", "Mendocino", "CA", "95460"),
suppliers += (150, "The High Ground", "100 Coffee Lane", "Meadows", "CA", "93966")
)
告诉我
background log: info: 10:58:48.465 [sqlServerLocal-1] DEBUG slick.jdbc.JdbcBackend.statement - Preparing statement: insert into "SUPPLIERS" ("SUP_ID","SUP_NAME","STREET","CITY","STATE","ZIP") values (?,?,?,?,?,?)
background log: error: Exception in thread "main" java.sql.DataTruncation: Data truncation
有人有什么想法吗?使用 slick - 3.1 连接到 SQL Server 是否明智?
编辑::
@szeiger 指出我在模型类中导入了错误的东西。我从 Hello Slick 示例中导入了旧的 H2 驱动程序,应该用这个替换;
import com.typesafe.slick.driver.ms.SQLServerDriver.api._
为了作为 SQL 服务器语言工作。
进行此更改后,“做某事”的数据库配置不再起作用,并宣传此内容
background log: info: Running HelloSlick
background log: error: Exception in thread "main" java.lang.NoClassDefFoundError: slick/profile/BasicProfile$SimpleQL
我已尝试更改实际 db 变量的实例化以匹配 szeiger 建议的“推荐”策略。
val db = Database.forURL("jdbc:sqlserver://%%%:1433;user=%%%%;password=%%%%", driver="com.typesafe.slick.driver.ms.SQLServerDriver",
executor = AsyncExecutor("test1", numThreads=10, queueSize=1000))
不幸的是,这失败了;
background log: error: Exception in thread "main" java.lang.NoClassDefFoundError: slick/profile/BasicProfile$Implicits
使用 jtds 驱动程序,它与光滑的 MSSQL 驱动程序具有相同的错误消息,尽管我尽了最大努力,但我无法实例化 MS JDBC 驱动程序。它位于应用程序中一个名为“lib”的文件夹中,尽管我怀疑这可能是幼稚和错误的地方。
通过 play-slick 管理这种依赖关系会非常好。我原以为我会通过在 SBT 中包含这条线来做到这一点;
"com.typesafe.play" %% "play-slick" % "1.1.0",
但似乎孤立地没有效果,我不确定如何配置它以访问“官方”光滑的 MS SQL 驱动程序。
编辑 2:: 最后,这似乎构建了我想要的。
name := """hello-slick-3.1"""
lazy val root = (project in file(".")).enablePlugins(PlayScala)
resolvers += "Typesafe Releases" at "http://repo.typesafe.com/typesafe/maven-releases/"
resolvers += "Scalaz Bintray Repo" at "https://dl.bintray.com/scalaz/releases"
resolvers += Resolver.url("Typesafe Ivy releases", url("https://repo.typesafe.com/typesafe/ivy-releases"))(Resolver.ivyStylePatterns)
scalaVersion := "2.11.6"
libraryDependencies ++= Seq(
"com.typesafe.slick" %% "slick" % "3.1.0",
"com.typesafe.slick" %% "slick-extensions" % "3.1.0",
"com.typesafe.play" %% "play-slick" % "1.1.0",
"org.scalatest" %% "scalatest" % "2.2.4" % "test"
)
我遇到了很多问题,因为我忘记包含正确的解析器。
不要忘记包含正确的解析器:-)。
【问题讨论】:
-
play-slick 只为您提供开源 Slick。您还需要添加 slick-extensions,如手册中所述。你也有版本冲突。
SimpleQL在 Slick 3.1 中不再存在。查看play-slick 了解支持的 Play、Play-Slick 和 Slick 版本组合。 -
我太笨了……我之前尝试过使用正确的版本,但没有找到,因为我没有添加解析器。如果你读到这个;试试这个 ...resolvers += "Typesafe Releases" at "repo.typesafe.com/typesafe/maven-releases"
标签: sql-server playframework-2.0 slick-3.0