我正在連接到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