-1

我正在使用“postgresql-simple”库并使用以下内容遇到 SqlError:

_ <- execute con "CREATE DATABASE ?" (Only ("example" :: String))

导致错误:

SqlError {sqlState = "42601", sqlExecStatus = FatalError, sqlErrorMsg = "syntax error at or near \"'example'\"", sqlErrorDetail = "", sqlErrorHint = ""}

数据库日志为:

[postgres-db-b6f75998b-5qnnx db] 2019-12-28 12:28:40.062 UTC [100] ERROR:  syntax error at or near "'example'" at character 17 
[postgres-db-b6f75998b-5qnnx db] 2019-12-28 12:28:40.062 UTC [100] STATEMENT:  CREATE DATABASE 'example' 

为什么要在值周围添加单引号?

这可能是由于 postgresql-simple 没有使用准备好的语句吗?

4

1 回答 1

0

根据https://nikita-volkov.github.io/hasql-benchmarks/

与“postgresql-simple”不同,该库使用准备好的语句,它允许数据库在每个连接中只解析一次 SQL 语句。

所以我错误地认为 postgresql-simple 将使用准备好的语句,因此它会在看似任何字符串值周围添加单引号。

于 2019-12-29T10:37:21.740 回答