在 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)
我有如下陈述
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)