Instrukcja Clojure jdbc create-table nie działa, chyba że używa Leiningen REPL

Mam mały program Clojure, który używaClojure JDBC narzędzia do tworzenia tabeli w bazie danych HSQL. Jednak wydaje się, że faktycznie tworzy tabelę, jeśli uruchomię ją z REPL Leiningena. Nie tworzy tabeli, jeśli uruchomię kod za pomocąlein run lub z mojego IDE (IntelliJ). Nie zgłoszono żadnych wyjątków. W obu przypadkach wyjście ma wartość „(0)”.

Oto fragment kodu:

<code>(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)"]))))
</code>

A ponieważ używam Leiningen, oto mojaproject.clj:

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

Jeśli zrobię:

<code>$ lein repl

tramway.core=> (-main)
(0)
nil
</code>

a następnie sprawdź/tmp/tramway.log WidzęCREATE TABLE wykonane pomyślnie.

Jeśli jednak to zrobię:

<code>$ rm -rf /tmp/tramway.*
$ lein run
(0)
</code>

a następnie sprawdź ten sam plik, jest pusty. Torobi stwórz.log, .properties, i.script pliki. Wszystko oprócz.log plik ma zawartość; po prostu nie ma zapisuCREATE TABLE po uruchomieniu.

Co ja robię źle? Spodziewałbym się, że będę miał taki sam rezultat, niezależnie od tego, czy uruchomię funkcję (-main) z REPL, czy też Leiningen uruchomi ją automatycznie.

Próbowałem także wyjąć stół ze stołu-main funkcja i uruchamianie jej jako skryptu za pośrednictwem mojego IDE, a ja wciąż otrzymuję ten sam zły wynik.

questionAnswers(1)

yourAnswerToTheQuestion