首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >除非使用Leiningen REPL,否则Clojure jdbc create-table语句不会运行。

除非使用Leiningen REPL,否则Clojure jdbc create-table语句不会运行。
EN

Stack Overflow用户
提问于 2012-04-19 23:42:21
回答 1查看 1.1K关注 0票数 8

我有一个小型的Clojure程序,它使用Clojure工具在HSQL数据库中创建一个表。但是,只有当我从Leiningen的REPL运行表时,它才会真正创建该表。如果我使用lein run或从IDE (IntelliJ)运行代码,它就不会创建表。没有任何例外的报告。在这两种情况下,输出都是"(0)“。

下面是代码片段:

代码语言:javascript
复制
(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

代码语言:javascript
复制
(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)

如果我这样做了:

代码语言:javascript
复制
$ lein repl

tramway.core=> (-main)
(0)
nil

然后检查/tmp/tramway.log,我可以看到CREATE TABLE成功执行。

但是,如果我这样做了:

代码语言:javascript
复制
$ rm -rf /tmp/tramway.*
$ lein run
(0)

然后检查同一个文件,它是空的。它确实创建了.log.properties.script文件。除了.log文件之外,所有文件都有内容;只是没有运行CREATE TABLE的记录。

我做错了什么?无论是从REPL运行我的(-main)函数还是让Leiningen自动运行它,我都希望得到相同的结果。

我还尝试将表创建从-main函数中删除,并将其作为脚本通过IDE运行,但仍然得到了相同的坏结果。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-20 10:58:48

这是一个常见的HSQLDB配置问题。

HSQLDB的默认配置不适合测试使用。因此,它将.log条目的写入和同步延迟了500毫秒,并且当连接关闭时不会关闭数据库。在您的URL中尝试以下任何一个设置:

代码语言:javascript
复制
:subname "file:/tmp/tramwaydb;hsqldb.write_delay=false"

代码语言:javascript
复制
:subname "file:/tmp/tramwaydb;shutdown=true"

参见这里的各种选项:http://hsqldb.org/doc/2.0/guide/dbproperties-chapt.html

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10238399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档