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",这是一个不同的名称。