我正在关注这本书,在第 219 页我遇到了一个问题,我收到一个错误,提示没有添加“个人资料”列。
https://pragprog.com/titles/dswdcloj3/web-development-with-clojure-third-edition/
我正在尝试使用源代码(留言板配置文件)运行它,但我无法让它工作,所以我不知道我做错了什么。
我执行以下命令:
(get-user* {:login "testuser"})
并得到错误:
Execution error (PSQLException) at org.postgresql.core.v3.QueryExecutorImpl/receiveErrorResponse (QueryExecutorImpl.java:2553).
ERROR: column "profile" does not exist
Position: 27
我查看了留言簿数据库和用户表,确实没有配置文件列。但是resources>migrations里有文件添加了profile列:
ALTER TABLE users
ADD COLUMN profile JSONB DEFAULT '{}'::JSONB;
在 sql 查询文件中,它有配置文件的代码:
-- START:profile
-- :name set-profile-for-user* :<! :1
-- :doc sets a profile map for the specified user
UPDATE users
SET profile = :profile
where :login = login
RETURNING *;
-- :name get-user* :? :1
-- :doc gets a user's publicly available information
SELECT login, created_at, profile from users
WHERE login = :login
-- END:profile
请告诉我还有哪些信息要分享。为什么没有添加配置文件列?我该如何解决这个问题?
编辑:我只是在 psql 命令行中输入以下内容:
ALTER TABLE users
ADD COLUMN profile JSONB DEFAULT '{}'::JSONB;
现在似乎一切正常。只需要使用命令行是正常的吗?还是仅在资源文件夹中包含命令更常见?如果是这样,为什么我的没有工作?谢谢