簡體   English   中英

在Clojure中,如何配置Korma和Ragtime使用相同的數據庫?

[英]In Clojure, how do I configure Korma and Ragtime to use the same database?

我正在嘗試在Clojure中使用數據庫。 此時,我想使用Ragtime修改數據庫架構本身,使用Korma來查詢和插入數據,並使用H2作為實際數據庫。

我認為我正確使用了它們,但是當我嘗試使用Korma訪問表時遇到錯誤。

這是我的project.clj:

(defproject dbexplore "0.1.0-SNAPSHOT"
  :dependencies [[org.clojure/clojure "1.6.0"]
                 [korma "0.4.0"]
                 [com.h2database/h2 "1.4.182"]
                 [ragtime "0.3.7"]]
  :plugins [[ragtime/ragtime.lein "0.3.7"]]
  :ragtime {:migrations ragtime.sql.files/migrations
            :database "jdbc:h2:/home/zck/Documents/dbexplore/resources/db/dbexplore.db"}
  :main dbexplore.core)

所以我要導入korma,h2database和ragtime。 我不確定它是否將Ragtime遷移指向了正確的數據庫位置。

我創建了一個遷移文件,其內容如下:

create table users (id INT, first varchar(32), last varchar(32));

然后運行它:

zck@zck-desktop:~/Documents/dbexplore$ lein ragtime migrate
Applying 2014-10-22-2-11-create-tables

我制作了一個簡單的core.clj文件,該文件僅從users表中選擇所有內容:

(ns dbexplore.core
  (:require [korma.db :as db]
            [korma.core]))

(def db-connection (db/h2 {:db "./resources/db/dbexplore.db"}))

(db/defdb korma-db db-connection)

(korma.core/defentity users)

(defn -main []
  (korma.core/select users))

但是在用lein run來運行它時,我得到一個錯誤:

Failure to execute query with SQL:
SELECT "users".* FROM "users"  ::  []
JdbcSQLException:
 Message: Table "users" not found; SQL statement:
SELECT "users".* FROM "users" [42102-182]
 SQLState: 42S02
 Error Code: 42102
Exception in thread "main" org.h2.jdbc.JdbcSQLException: Table "users" not found; SQL statement:
SELECT "users".* FROM "users" [42102-182], compiling:(/tmp/form-init7833348906040195763.clj:1:90)

我的懷疑是我正在從一次ragtime遷移core.clj的h2調用中指向另一個數據庫文件,但是我不確定如何正確指定它。 如何使這兩個庫使用同一數據庫?

我在科爾馬中創建了一個問題: https : //github.com/korma/Korma/issues/273
也許您想添加一些東西。

我能夠使用yesql而不是korma從h2數據庫中讀取數據。 根據不同的線程,應該可以使用mysql或postgresql代替h2,但是我還沒有嘗試過。

順便說一句。 我已經成功地將datomic用於我的最后一個sideproject,而這些問題都沒有,所以請不要放棄,只需嘗試其他設置即可。

更新請查看鏈接的錯誤,維護者發布了兩個解決方案,它們都對我有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM