SqlError из-за одинарных кавычек вокруг параметризованного значения для `CREATE DATABASE`
Я использую библиотеку postgresql-simple и запускаю SqlError со следующим:
_ <- execute con "CREATE DATABASE ?" (Only ("example" :: String))
Приводит к ошибке:
SqlError {sqlState = "42601", sqlExecStatus = FatalError, sqlErrorMsg = "syntax error at or near \"'example'\"", sqlErrorDetail = "", sqlErrorHint = ""}
С журналами db:
[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 не использует подготовленные операторы?
1 ответ
Согласно https://nikita-volkov.github.io/hasql-benchmarks/
В отличие от postgresql-simple, библиотека использует подготовленные операторы, что позволяет базе данных анализировать операторы SQL только один раз за соединение.
Поэтому я ошибочно предположил, что postgresql-simple будет использовать подготовленные операторы, и, следовательно, он будет добавлять одинарные кавычки вокруг кажущегося строкового значения.