我试图开始玩游戏和光滑。
策略;从激活器教程中获取hello-slick-3.1项目。
如果内存数据库中的H2工作正常。我想连接到SQL服务器。在一场战斗后,我有一些似乎使用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
有没有人有任何想法?用光滑连接到SQL服务器 - 3.1甚至是一个明智的尝试吗?
编辑::
@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"
)
我遇到了很多问题,因为我忘了包含正确的解析器。
不要忘记包含正确的解析器: - )。
答案 0 :(得分:0)
在奖励之后,看起来像slick在SQL Server中创建了类型为'varchar(1)'的列。
哪个数据无法容纳。
不使用Slick来创建表格,并且注释掉这些行然后意味着该介绍的工作方式与宣传的一样。
答案 1 :(得分:0)
您对Slick驱动程序和JDBC驱动程序感到困惑。您使用的是哪个Slick驱动程序?您的代码段中缺少导入,但应该有import com.typesafe.slick.driver.ms.SQLServerDriver.api._
之类的内容。在这里使用错误的驱动程序可以解释创建为VARCHAR(1)
的字符串列。
在Slick 3.1中配置数据库连接的推荐方法是通过DatabaseConfig,它允许您配置Slick驱动程序以及实际的连接参数。当您编写Play应用程序时,请使用play-slick插件来处理数据库连接。它也基于DatabaseConfig语法。
net.sourceforge.jtds.jdbc.Driver
的替代方案是Microsoft自己的JDBC驱动程序com.microsoft.sqlserver.jdbc.SQLServerDriver
,可以从Microsoft单独下载。您必须手动将sqljdbc4.jar添加到您的构建中才能使其正常工作。