在 Slick 中过滤时,单引号会导致问题

Single quotes cause trouble while filtering in Slick

我有如下陈述

  def create(company: Company): Future[Company] = {
    dbConfig.db.run(companies.filter(_.name === company.name).result.headOption)
}

他们失败了,比如这个

org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement

我试图转义单引号但没有成功。

dbConfig.db.run(companies.filter(_.name === company.name.replace("'", "''")).result.headOption)

当我试图插入这样一条记录时:

val company = doSync(companies.create(Company(0, "C's company")))

我得到的异常是:

Syntax error in SQL statement "select `id`, `name` from `company` where `name` = 'C\'s company[*]'"; SQL statement:
select `id`, `name` from `company` where `name` = 'C\'s company' [42000-200]
org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "select `id`, `name` from `company` where `name` = 'C\'s company[*]'"; SQL statement:
select `id`, `name` from `company` where `name` = 'C\'s company' [42000-200]

请注意,我在 Mysql 模式下使用 H2 来 运行 我的测试。

我认为该错误提示您导入了错误的 Slick 配置文件。我不熟悉 Mysql 模式下的 H2。也许您需要使用 MySQL 配置文件? (如果您使用 MySQL,则为 H2)