阅读《Web Development with Clojure》第三版遇sql命名空间不存在错误求助
问题解决:No such namespace: sql 错误
这个错误本质不是找不到sql命名空间,而是SQL文件路径解析失败,REPL误把路径里的sql/当成了命名空间的一部分解析,导致报错。解决步骤如下:
确认项目结构与REPL工作目录
执行(System/getProperty "user.dir")查看当前REPL的工作目录,确保它指向你的项目根目录(根目录下应存在sql文件夹及queries.sql文件)。如果路径不对,调整Calva的Jack-in启动目录为项目根目录。修正SQL文件引用方式
有两种可靠的引用方式:- 类路径加载(推荐):将
sql文件夹移动到项目的resources目录下(Clojure默认会把resources目录加入类路径),然后修改代码为:(conman/bind-connection *db* "classpath:sql/queries.sql") - 绝对路径加载:直接使用SQL文件的绝对路径,比如:
这种方式换环境需要修改路径,不推荐长期使用。(conman/bind-connection *db* "/Users/yourname/projects/guestbook/sql/queries.sql")
- 类路径加载(推荐):将
检查命名空间依赖
确保guestbook.db.core命名空间已正确引入conman:(ns guestbook.db.core (:require [conman.core :as conman]))能调用
conman/bind-connection说明这一步大概率没问题,但如果之前有修改命名空间,建议重启REPL生效。
内容的提问来源于stack exchange,提问作者user3523406
相关产品推荐
相关产品推荐

