为什么不将此列添加到 psql 中?

时间:2021-08-02 00:28:54

标签: postgresql clojure

我正在关注这本书,在第 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;

现在似乎一切正常。只需要使用命令行是正常的吗?还是仅在资源文件夹中包含命令更常见?如果是这样,为什么我的没有工作?谢谢

0 个答案:

没有答案