Оператор Clojure jdbc create-table не запускается, если не используется Leiningen REPL

У меня есть небольшая программа Clojure, которая использует инструменты Clojure JDBC для создания таблицы в базе данных HSQL. Однако кажется, что на самом деле таблица создается только в том случае, если я запускаю ее из REPL Лейнингена. Таблица не создается, если я запускаю код с помощью lein runили из моей IDE (IntelliJ). Об исключениях не сообщается. В обоих случаях выводится просто «(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)"]))))

И поскольку я использую 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.

Что я делаю не так? Я ожидаю, что получу тот же результат, независимо от того, запускаю ли я свою функцию (-main)из REPL или пусть Leiningen запускает ее автоматически.

Я также попытался вывести создание таблицы из функции -mainи запустить ее как скрипт через свою IDE, но все равно получаю тот же плохой результат.

8
задан Jonathan 19 April 2012 в 23:42
поделиться