播放 Slick 配置
Play Slick config
我正在尝试开始玩游戏。
策略;从激活器教程中获取 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 设法基于它的模式创建 'suppliers' table,但是所有后续请求都以模糊的 'data truncation' 消息失败;
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 服务器是否是明智的尝试?
编辑::
@szeiger 提出了一个很好的观点,即我将错误的东西导入到模型中 类。我从 Hello Slick 示例中导入了旧的 H2 驱动程序,应该用这个替换;
import com.typesafe.slick.driver.ms.SQLServerDriver.api._
为了作为 SQL 服务器语言工作。
进行此更改后,'did something' 的数据库配置不再有效,对此进行通告
background log: info: Running HelloSlick
background log: error: Exception in thread "main" java.lang.NoClassDefFoundError: slick/profile/BasicProfile$SimpleQL
我尝试更改实际 db 变量的实例化以匹配 szeiger 建议的 'recommended' 策略。
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",
但似乎单独没有效果,我不确定如何配置它以达到 'official' 光滑的 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 服务器中创建了类型为 'varchar(1)' 的列。
不能容纳太多数据。
不使用 Slick 来创建表格,并且注释掉这些行则意味着介绍如宣传的那样工作。
您混淆了 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 添加到您的构建中才能使其正常工作。
顺便说一句,Slick 3.2 将更改术语并使用 "driver" 一词专门用于 JDBC 驱动程序。 Slick 驱动程序将在 3.2 中被称为 "profiles"。
我正在尝试开始玩游戏。
策略;从激活器教程中获取 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 设法基于它的模式创建 'suppliers' table,但是所有后续请求都以模糊的 'data truncation' 消息失败;
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 服务器是否是明智的尝试?
编辑::
@szeiger 提出了一个很好的观点,即我将错误的东西导入到模型中 类。我从 Hello Slick 示例中导入了旧的 H2 驱动程序,应该用这个替换;
import com.typesafe.slick.driver.ms.SQLServerDriver.api._
为了作为 SQL 服务器语言工作。
进行此更改后,'did something' 的数据库配置不再有效,对此进行通告
background log: info: Running HelloSlick
background log: error: Exception in thread "main" java.lang.NoClassDefFoundError: slick/profile/BasicProfile$SimpleQL
我尝试更改实际 db 变量的实例化以匹配 szeiger 建议的 'recommended' 策略。
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",
但似乎单独没有效果,我不确定如何配置它以达到 'official' 光滑的 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 服务器中创建了类型为 'varchar(1)' 的列。
不能容纳太多数据。
不使用 Slick 来创建表格,并且注释掉这些行则意味着介绍如宣传的那样工作。
您混淆了 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 添加到您的构建中才能使其正常工作。
顺便说一句,Slick 3.2 将更改术语并使用 "driver" 一词专门用于 JDBC 驱动程序。 Slick 驱动程序将在 3.2 中被称为 "profiles"。