Clojure JDBCツールを使用してHSQLデータベースにテーブルを作成する小さなClojureプログラムがあります。しかし、私がLeiningenのREPLから実行すると、実際にテーブルを作成するように見えるだけです。 lein run
またはIDE(IntelliJ)を使用してコードを実行すると、テーブルが作成されません。例外は報告されていません。両方の場合、出力はちょうど "(0)"です。Clojure jdbc create-table文が実行されない限り、Leiningen REPL
ここでは、コードスニペットがあります:
(ns tramway.core
(:require [clojure.java.io :as io]
[clojure.java.jdbc :as sql]))
(def hsql-db {:subprotocol "hsqldb"
:subname "file:/tmp/tramwaydb"
:user "SA"
:password ""})
(defn -main []
(println (sql/with-connection hsql-db (sql/create-table
:footfall
[:id "INTEGER" "GENERATED ALWAYS AS IDENTITY(START WITH 1)"]
[:sample_date "DATE"]
[:exhibition "varchar(255)"]))))
そして、私はLeiningenをを使用していることから、ここに私のproject.clj
です:
(defproject tramway "1.0.0-SNAPSHOT"
:description "Description here"
:dependencies [[org.clojure/clojure "1.3.0"]
[org.clojure/java.jdbc "0.1.4"]
[org.hsqldb/hsqldb "2.2.8"]]
:main tramway.core)
私が行う場合:その後、
$ lein repl
tramway.core=> (-main)
(0)
nil
と/tmp/tramway.log
をチェックCREATE TABLE
が正常に実行されたことがわかります。私がしなければ
しかし、:
$ rm -rf /tmp/tramway.*
$ lein run
(0)
をし、同じファイルをチェックし、それが空です。 はです。.log
,.properties
、および.script
ファイルを作成します。 .log
ファイルを除くすべてのファイルにはコンテンツがあります。 CREATE TABLE
が実行されたという記録はありません。
私は間違っていますか?私はREPLから自分の(-main)関数を実行しても、Leiningenに自動的にそれを実行させても同じ結果を期待します。
私はまた、-main
関数からテーブルを作成し、それを私のIDE経由でスクリプトとして実行しようとしましたが、同じ結果が得られます。
それをやりました。ありがとうございました!それはHSQLDBとClojureへの私の最初の進出なので、どこから始めるべきか分かりませんでした。私はあなたにもっとアップアップすることを願っています! – Jonathan