2

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

users テーブルからすべてを選択するだけの単純な core.clj ファイルを作成しました。

(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)

私の疑いではh2、core.clj の呼び出しで、移行中の 1 つの ragtime とは別のデータベース ファイルを指しているのですが、それを適切に指定する方法がわかりません。これら 2 つのライブラリで同じデータベースを使用するにはどうすればよいですか?

4

1 に答える 1

0

korma で問題を作成しました: https://github.com/korma/Korma/issues/273
何か追加したいかもしれません。

korma の代わりに yesql を使用して、h2 データベースからデータを読み取ることができました。さまざまなスレッドによると、h2 の代わりに mysql または postgresql を使用できるはずですが、試したことはありません。

ところで。私は最近のサイドプロジェクトで datomic を問題なく使用できましたが、あきらめずに別のセットアップを試してみてください。

更新リンクされたバグを見てください。メンテナーは2つのソリューションを投稿しましたが、どちらも私にとってはうまくいきます。

于 2015-01-27T08:30:55.990 に答える