Sql server 玩滑头配置
我正试着从打球和滑头开始 战略;以activator教程中的hello-slick-3.1项目为例 If可以很好地处理内存中的H2数据库。我想连接到sql server。在一场战斗之后,我有了一些配置,似乎可以使用JDT进行连接 在application.conf中Sql server 玩滑头配置,sql-server,playframework-2.0,slick-3.0,Sql Server,Playframework 2.0,Slick 3.0,我正试着从打球和滑头开始 战略;以activator教程中的hello-slick-3.1项目为例 If可以很好地处理内存中的H2数据库。我想连接到sql server。在一场战斗之后,我有了一些配置,似乎可以使用JDT进行连接 在application.conf中 driver=net.sourceforge.jtds.jdbc.Driver url="jdbc:jtds:sqlserver://%%%%:1433;databaseName=%%%%;user=%%%;password=
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 server语言
进行此更改后,“做了一些事情”的DB配置不再工作,因此
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"
)
我有很多问题,因为我忘了包括正确的解析器
别忘了包含正确的解析程序:-)。在经历了额外的痛苦之后,slick似乎在SQL Server中创建了类型为“varchar(1)”的列 它不能保存很多数据
不使用Slick来创建表,然后注释掉这些行,这意味着介绍的工作方式与宣传的一样。您混淆了Slick驱动程序和JDBC驱动程序。你用的是哪一个机灵的司机?您的代码段中缺少导入,但应该有类似于导入com.typesafe.slick.driver.ms.SQLServerDriver.api的内容。在这里使用错误的驱动程序可能会将创建的字符串列解释为
VARCHAR(1)
在Slick 3.1中配置数据库连接的推荐方法是via,它允许您配置Slick驱动程序以及实际的连接参数。编写Play应用程序时,请使用Play slick插件来处理数据库连接。它还基于DatabaseConfig语法
net.sourceforge.jtds.jdbc.Driver
的替代品是微软自己的jdbc驱动程序,com.Microsoft.sqlserver.jdbc.SQLServerDriver
,可以从微软单独下载。您必须手动将sqljdbc4.jar添加到您的构建中才能实现这一点
顺便说一句,Slick 3.2将改变术语,专门为JDBC驱动程序使用“驱动程序”一词。在3.2中,光滑的驱动程序将被称为“profiles”。好的,我已经尝试过了——将导入语句切换到SQL server。这当然让人感觉“对”。然而,这似乎有一个缺点,就是事后不工作。我想在评论中写一个回复,但我想我需要回答这个问题以获得正确的格式。。。下面是回应。play-slick只提供了开源的slick。您还需要添加光滑的扩展,如手册中所述。您还存在版本冲突<代码>SimpleQL在Slick 3.1中不再存在。检查支持的Play、Play Slick和Slick的版本组合。我当时很傻。。。我以前曾尝试使用正确的版本,但没有找到正确的位置,因为我没有添加解析器。如果你读到这篇文章;请尝试此…解析程序+=“类型安全释放”位于“”