【问题标题】:How do i create a dbo schema in the h2 sqlserver emulator?如何在 h2 sqlserver 模拟器中创建 dbo 模式?
【发布时间】:2014-10-06 06:07:50
【问题描述】:

我得到了一个

JdbcSQLException: Schema "dbo" not found; 
SQL statement: create table "dbo"."TableName"

在针对 h2 sqlserver 模拟器运行一些样板 sql 时(即,使用配置设置:

db.default.slickdriver=com.typesafe.slick.driver.ms.SQLServerDriver
db.default.driver=net.sourceforge.jtds.jdbc.Driver
db.default.url="jdbc:h2:file:~/data/test1;MODE=MSSQLServer"

运行以下:

Database.forDataSource(DB.getDataSource()) 
   withSession {

我已尝试创建架构:

  Database.forDataSource(DB.getDataSource())     
    withSession {
    implicit session => 
       Q.updateNA("CREATE SCHEMA \"dbo\" AUTHORIZATION sa;")
  }

但这似乎不起作用(或报告错误消息)。我错过了什么吗?


仍然无法以编程方式创建架构。能够通过 h2 控制台轻松创建它,使用与上面完全相同的查询。


play.api.UnexpectedException: Unexpected exception[JdbcSQLException: Schema "dbo" not found; SQL statement:
create table "dbo"."TestTable" ("TestTableId" CHAR(36))
at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:148) ~[play_2.10-2.2.3.jar:2.2.3]
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:112) ~[play_2.10-2.2.3.jar:2.2.3]
    at scala.Option.map(Option.scala:145) ~[scala-library-2.10.4.jar:na]
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:112) ~[play_2.10-2.2.3.jar:2.2.3]
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:110) ~[play_2.10-2.2.3.jar:2.2.3]
    at scala.util.Success.flatMap(Try.scala:200) ~[scala-library-2.10.4.jar:na]
Caused by: org.h2.jdbc.JdbcSQLException: Schema "dbo" not found; SQL statement:
create table "dbo"."TestTable" ("TestTableId" CHAR(36))
at org.h2.message.DbException.getJdbcSQLException(DbException.java:329) ~[h2-1.3.172.jar:1.3.172]
    at org.h2.message.DbException.get(DbException.java:169) ~[h2-1.3.172.jar:1.3.172]
    at org.h2.message.DbException.get(DbException.java:146) ~[h2-1.3.172.jar:1.3.172]
    at org.h2.command.Parser.getSchema(Parser.java:613) ~[h2-1.3.172.jar:1.3.172]
    at org.h2.command.Parser.getSchema(Parser.java:620) ~[h2-1.3.172.jar:1.3.172]
    at org.h2.command.Parser.parseCreateTable(Parser.java:5254) ~[h2-1.3.172.jar:1.3.172]

【问题讨论】:

  • 你贴出完整的错误信息(包括错误代码)和strack trace好吗?
  • 我在原始代码中有一个驱动程序拼写错误 - 更新了我的设置以反映(并清理了一些代码)。这可能是驱动程序问题吗?

标签: scala h2 slick


【解决方案1】:

请避免使用这种形式的数据库 URL (jdbc:h2:file:data/test1),因为这是相对于当前工作目录的(并且工作目录可以更改)。请改用jdbc:h2:/absolute/path,或jdbc:h2:~/data(相对于当前用户主目录)。

如果create table "dbo"."TableName"使用双引号,那么create schema也需要使用双引号:

create schema "dbo" authorization sa

【讨论】:

  • 我试过了 - Q.updateNA("CREATE SCHEMA \"dbo\" AUTHORIZATION sa;")- 仍然看到: 引起:org.h2.jdbc.JdbcSQLException: Schema "dbo"未找到; SQL 语句:创建表“dbo”。
  • 好吧,我不知道它是什么,因为它对我有用。您是否 100% 确定使用双引号创建架构?如果我像您在问题中所做的那样创建架构,我会遇到问题,但在使用双引号时不会。
  • 是的 - 更新了问题以反映我的代码。我也很困惑——它在 h2 控制台(即 h2 浏览器)中工作,但在其他地方没有。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-24
  • 2017-04-07
  • 2018-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多