我正在连接到PostgreSQL数据库,我想知道在某些UUID类型的列中是否存在uuid表。参数uuid在另一个函数中生成。 Clojure中我尝试使用clojure.java.jdbc/db-do-prepared检查PostgreSQL表中是否存在uuid
(jdbc/db-do-prepared {:datasource datasource}
"SELECT exists (SELECT 1 FROM account WHERE guid=?::uuid)"
[uuid])
但它抛出一个异常:
BatchUpdateException Batch entry 0 SELECT exists (SELECT 1 FROM table WHERE guid='dbe8cda5-d37c-3446-9b9c-85e0344af3b1'::uuid) was aborted. Call getNextException to see the cause. org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError (AbstractJdbc2Statement.java:2781)
如果我连接到数据库,并粘贴生成的SQL并执行它,它工作正常。从project.clj
(jdbc/db-do-prepared {:datasource datasource}
"INSERT INTO table(guid) VALUES (?::uuid)"
[uuid])
相关的依赖关系:
[org.clojure/java.jdbc "0.4.2"]
[org.postgresql/postgresql "9.4-1205-jdbc42"]
[hikari-cp "1.3.1"]
啊,是的!我最初使用'插入!'做插入,但是会导致一个转换异常,因此在这种情况下使用'do-prepared'。在我原来的问题'SELECT'与'query'一起工作。感谢您的额外信息,我一定会牢记以备将来参考。 – Joel