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 つのライブラリで同じデータベースを使用するにはどうすればよいですか?