[英]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.