Table 在使用 H2Database 进行测试时未找到
Table is not Found while testing with H2Database
我一直在使用 slick 进行数据库交互,并使用 h2 内存数据库进行测试。
所以,我刚刚添加了一个新方法,我在其中编写了简单的 SQL 查询而不是光滑的查询。
光滑版本:3.3.0
HikariCp:3.3.0
H2:1.4.197
所以它失败了普通的 sql 查询异常 org.h2.jdbc.JdbcSQLException: Table \"TASK\" not found
即使 table 在那里。
对于其他测试用例,我们从任务 table 中获取数据,它工作正常,因此任务 table 就在那里。
我无法在 slick 中为此方法编写查询。
def filterTasksByGivenConstraints(taskIds: List[Long], constraints: String): Future[Vector[Int]] = {
val ids = taskIds.mkString("'", "','", "'")
val query = sql"""SELECT id FROM task WHERE id IN (#$ids) and #$constraints """.as[Int]
db.get.run(query)
.recover {
case ex: Exception =>
logger.error(s"An exception has occurred while fetching filtered tasks $ids for given constraints $constraints and exception is: $ex")
throw ex
}
}
在 H2 中,其默认设置标识符区分大小写,但不带引号的标识符将转换为大写。这意味着 table 和真实姓名 task
只能用带引号的标识符 "task"
引用。未加引号的标识符 task
等于 "TASK"
,这是一个不同的名称。
我一直在使用 slick 进行数据库交互,并使用 h2 内存数据库进行测试。 所以,我刚刚添加了一个新方法,我在其中编写了简单的 SQL 查询而不是光滑的查询。
光滑版本:3.3.0 HikariCp:3.3.0 H2:1.4.197
所以它失败了普通的 sql 查询异常 org.h2.jdbc.JdbcSQLException: Table \"TASK\" not found
即使 table 在那里。
对于其他测试用例,我们从任务 table 中获取数据,它工作正常,因此任务 table 就在那里。
我无法在 slick 中为此方法编写查询。
def filterTasksByGivenConstraints(taskIds: List[Long], constraints: String): Future[Vector[Int]] = {
val ids = taskIds.mkString("'", "','", "'")
val query = sql"""SELECT id FROM task WHERE id IN (#$ids) and #$constraints """.as[Int]
db.get.run(query)
.recover {
case ex: Exception =>
logger.error(s"An exception has occurred while fetching filtered tasks $ids for given constraints $constraints and exception is: $ex")
throw ex
}
}
在 H2 中,其默认设置标识符区分大小写,但不带引号的标识符将转换为大写。这意味着 table 和真实姓名 task
只能用带引号的标识符 "task"
引用。未加引号的标识符 task
等于 "TASK"
,这是一个不同的名称。