首页 > 解决方案 > 为什么 psql 中没有添加此列?

问题描述

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

我查看了留言簿数据库和用户表,确实没有配置文件列。但是资源>迁移中的文件添加了配置文件列:

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;

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

标签: postgresqlclojure

解决方案


推荐阅读