【发布时间】:2021-06-08 18:42:17
【问题描述】:
我有如下陈述
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 来运行我的测试。
【问题讨论】:
-
'我试图转义单引号但没有成功' - 你能发布你尝试的内容吗?您也可以记录已编译的查询,请参阅:stackoverflow.com/a/35846676/3298917
-
好的,我会改写问题
-
尝试使用额外的
single quote(而不是backslash)转义它。