使用 Korma 插入数据库行

发布于 2025-01-06 04:08:20 字数 1565 浏览 7 评论 0原文

我有一个使用以下架构的数据库表:

CREATE TABLE users
(id SERIAL PRIMARY KEY,
  username TEXT UNIQUE NOT NULL,
  password TEXT NOT NULL,
  email TEXT NOT NULL,
  admin BOOLEAN NOT NULL,
  active BOOLEAN NOT NULL,
  created DATE NOT NULL);

我通过定义 users 实体来使用 Korma

(defentity users
           (has-many tips))

并且我尝试使用以下函数来种子值:

(defn make-user-vals [username pass email]
  "Creates an active, non-admin user"
  {:username username, 
   :password (crypt/encrypt pass), 
   :email email,
   :admin false,
   :active true,
   :created (java.util.Date.)})

(defn seed-users! []
  (insert ent/users
    (values 
      (users/make-user-vals "admin" "f00b4r" "[email protected]"))))

(seed-users!)失败并显示以下消息(对我来说并没有真正的信息):

Failure to execute query with SQL:
INSERT INTO users (username, password, email, admin, active, created) VALUES (?, ?, ?, FALSE, TRUE, ?)  ::  [admin $2a$10$AVdxz9HvYOyszhcXVrTVi.oBcbz9EZVfGZYNUI3iDMb0hj3igvpEy [email protected] #<Date Wed Feb 15 21:59:10 CET 2012>]
ClassCastException java.lang.RuntimeException cannot be cast to java.sql.SQLException  clojure.java.jdbc/print-sql-exception (jdbc.clj:350)

知道为什么吗?

(如果有帮助,查询数据库有效,所以它看起来不像连接问题)

谢谢!

I have a DB table that uses the following schema:

CREATE TABLE users
(id SERIAL PRIMARY KEY,
  username TEXT UNIQUE NOT NULL,
  password TEXT NOT NULL,
  email TEXT NOT NULL,
  admin BOOLEAN NOT NULL,
  active BOOLEAN NOT NULL,
  created DATE NOT NULL);

I use Korma by defining a users entity

(defentity users
           (has-many tips))

And I try to seed values using the following functions:

(defn make-user-vals [username pass email]
  "Creates an active, non-admin user"
  {:username username, 
   :password (crypt/encrypt pass), 
   :email email,
   :admin false,
   :active true,
   :created (java.util.Date.)})

(defn seed-users! []
  (insert ent/users
    (values 
      (users/make-user-vals "admin" "f00b4r" "[email protected]"))))

(seed-users!) fails with the following (not really informative to my eyes) message:

Failure to execute query with SQL:
INSERT INTO users (username, password, email, admin, active, created) VALUES (?, ?, ?, FALSE, TRUE, ?)  ::  [admin $2a$10$AVdxz9HvYOyszhcXVrTVi.oBcbz9EZVfGZYNUI3iDMb0hj3igvpEy [email protected] #<Date Wed Feb 15 21:59:10 CET 2012>]
ClassCastException java.lang.RuntimeException cannot be cast to java.sql.SQLException  clojure.java.jdbc/print-sql-exception (jdbc.clj:350)

Any idea why?

(if that helps, querying the DB works, so it does not look like a connection problem)

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

酒浓于脸红 2025-01-13 04:08:20

您需要使用 java.sql.Date 而不是 java.util.Date

(java.sql.Date. 2012 2 16)

顺便说一句,您可能想调查 clj-time 作为时间处理解决方案。 Java 的标准时间和日期相关类完全是疯狂的(正如本期所证明的那样)。

You need to use java.sql.Date rather than java.util.Date:

(java.sql.Date. 2012 2 16)

Incidentally, you might want to investigate clj-time as a time-handling solution. Java's standard time-and-date-related classes are completely insane (as evidenced by the present issue).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文