Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 玩滑头配置_Sql Server_Playframework 2.0_Slick 3.0 - Fatal编程技术网

Sql server 玩滑头配置

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=

我正试着从打球和滑头开始

战略;以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=%%%%%"
这是使用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的版本组合。我当时很傻。。。我以前曾尝试使用正确的版本,但没有找到正确的位置,因为我没有添加解析器。如果你读到这篇文章;请尝试此…解析程序+=“类型安全释放”位于“”