使用 clojure 的 korma sqlite3 助手时,sqlite3 数据库的默认路径是啥?

Posted

技术标签:

【中文标题】使用 clojure 的 korma sqlite3 助手时,sqlite3 数据库的默认路径是啥?【英文标题】:When using clojure's korma sqlite3 helpers, what's the default path for the sqlite3 database?使用 clojure 的 korma sqlite3 助手时,sqlite3 数据库的默认路径是什么? 【发布时间】:2013-12-17 17:19:00 【问题描述】:

使用 korma.db 时,defdb 可以使用 sqlite3 助手来建立与 sqlite3 数据库的连接。但是,我尝试将数据库放在项目目录的根目录、project.clj 旁边以及资源目录中,但是当我尝试使用 db 时,我得到:

使用 SQL 执行查询失败: 选择“示例”。* FROM“示例”:: [] SQL异常: 消息:[SQLITE_ERROR] SQL 错误或缺少数据库(没有这样的表:示例)

不用说我的 sqlite 数据库包含一个示例表。尝试执行此操作时,我在根项目目录中获得了一个零字节的 sqlite.db 文件。

顺便说一句,我是从项目中的 lein repl 执行此操作的。

编辑:失败时我会这样做:

(use 'korma.db)
(defdb db (sqlite3 :db "filename.db"))
(use 'korma.core)
(defentity examples)
(select examples)

【问题讨论】:

请提供您用于连接数据库并发送查询的代码 我会把它添加到问题中。 没有得到相同的结果。我已经尝试了您给出的语句,并在根目录中创建了一个“filename.db”,正如我所料。我在该数据库中添加了一个“示例”表,然后它运行良好。你还有这个问题吗? 【参考方案1】:

以防万一有人想知道或遇到这个......

使用版本[korma "0.4.2"][org.xerial/sqlite-jdbc "3.7.15-M1"] 在我的project.clj:

我的项目结构如下:

root/project.clj
root/db/dev.sqlite3
root/src/...

这就是我使用 korma 访问数据库的方式:

(use 'korma.db)
(defdb mydb :classname "org.sqlite.JDBC"
      :subprotocol "sqlite"
      :subname "db/dev.sqlite3")

基本上,使用子名,我可以在 lein 项目的根目录中进行搜索。我根据上面的目录结构在子名称中添加了db/

【讨论】:

以上是关于使用 clojure 的 korma sqlite3 助手时,sqlite3 数据库的默认路径是啥?的主要内容,如果未能解决你的问题,请参考以下文章

连接数据库 in clojure ---korma

如何使用 korma 在 postgresql 上插入 clj-time 日期时间对象

Clojure线程优先具有过滤功能

Clojure:将 ragtime 与 sqlite3 一起使用

使用clojure.java.jdbc在Clojure中使用外键约束

如何使用 next.jdbc 将 SQLite 中的 bool 列读入 bool Clojure 值? SQLite 将布尔值存储为 0/1