ClojureJDBCツールを使用してHSQLデータベースにテーブルを作成する小さなClojureプログラムがあります。ただし、実際にテーブルを作成するのは、LeiningenのREPLから実行した場合のみのようです。IDE(IntelliJ)を使用して、またはIDE(IntelliJ)からコードを実行すると、テーブルが作成されませんlein run
。報告された例外はありません。どちらの場合も、出力は「(0)」です。
コードスニペットは次のとおりです。
(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)"]))))
そして、私はライニンゲンを使用しているので、ここに私の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を介してスクリプトとして実行しようとしましたが、それでも同じ悪い結果が得られます。