Ich habe ein kleines Clojure-Programm, das die Clojure JDBC Tools verwendet, um eine Tabelle in einer HSQL-Datenbank zu erstellen. Es scheint aber nur die Tabelle zu erstellen, wenn ich sie von Leiningens REPL aus laufe. Es erstellt die Tabelle nicht, wenn ich den Code unter Verwendung lein run
oder von meiner IDE (IntelliJ) ausführe. Es gibt keine Ausnahmen. In beiden Fällen ist die Ausgabe nur "(0)".Clojure jdbc create-table-Anweisung wird nicht ausgeführt, wenn Leiningen REPL
Hier ist der Code-Schnipsel:
(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)"]))))
Und da ich Leiningen bin mit, hier ist mein 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)
Wenn ich tun:
$ lein repl
tramway.core=> (-main)
(0)
nil
und dann überprüfen /tmp/tramway.log
Ich kann die CREATE TABLE
erfolgreich ausgeführt sehen.
Allerdings, wenn ich tun:
$ rm -rf /tmp/tramway.*
$ lein run
(0)
und dann die gleiche Datei überprüfen, ist es leer. Es erstellt die .log
, .properties
und .script
Dateien erstellen. Alle außer der .log
Datei haben Inhalt; Es gibt einfach keine Aufzeichnung der CREATE TABLE
ausgeführt wurde.
Was mache ich falsch? Ich würde erwarten, das gleiche Ergebnis zu haben, egal ob ich meine (-main) -Funktion von der REPL aus führe oder Leiningen es automatisch ausführen lasse.
Ich habe auch versucht, die Tabellenerstellung aus der -main
-Funktion und läuft es nur als Skript über meine IDE, und ich bekomme immer noch das gleiche schlechte Ergebnis.
Das tat es. Vielen Dank! Es ist mein erster Ausflug in HSQLDB und auch Clojure, also wusste ich nicht wo ich anfangen soll. Ich wünschte, ich könnte dich mehr aufrüsten! – Jonathan