cronjob java.sql.SQLException错误:参数索引超出范围(1>参数数量,为0)

时间:2018-08-30 17:59:52

标签: mysql clojure

您好,这是我收到的错误,似乎无法发现我的SQL语句出了什么问题。猜想眼睛不会受伤

UPDATE sales SET state_name =?, sales_id =null, sales_timer =null where entity_id =?

这是包含该语句的函数

(defn release
      [m]
      (db/execute!
        (core/db)
        (str "UPDATE sales SET state_name =?, sales_id =null, sales_timer =null where entity_id =?")
        [(name (m :current-state))
         (m :entity-id)]))

这是我们从

收到的错误
(defn get-unfinished-sales
    []
      (db/query
        (score/db)
        (str "select * from sales where state_name = 'in-progress'")))


 (defn unlock-sales
       [usales]
       (doall (map (fn [sale]
                       (->
                         (score/put-batch
                           {:user     core/system-user
                            :messages [{:entity-id (sale :entity-id)
                                        :message-type "release"
                                        :message {}}]
                            }
                           :sales)
                         (core/log-result-if-failure))) usales)))


(defn
  run
  [& args]
  (->>
    (get-unfinished-sales)
    (filter (fn [row] (not (nil? (row :sales-timer)))))
    (filter (fn [row] (> (t/in-hours (t/interval (row :sales-timer) (t/now))) 1)))
    (unlock-sales)))

1 个答案:

答案 0 :(得分:2)

您对db/execute!的调用应将SQL字符串作为带有参数的向量中的第一项:

(defn release
      [m]
      (db/execute!
        (core/db)
        ["UPDATE sales SET state_name =?, sales_id =null, sales_timer =null where entity_id =?"
         (name (m :current-state))
         (m :entity-id)]))