postgresql - 为什么 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;
现在事情似乎一切正常。只需要使用命令行是否正常?还是在资源文件夹中只包含命令更典型?如果是这样,为什么我的没有工作?谢谢
解决方案
推荐阅读
- ios - 链接到 Xcode 上的 arm64 库时出现链接器错误
- c - “[...] 从整数中生成指针而不进行强制转换”背后的想法
- reactjs - 使用 TypeScript 在 React.Component 中通过函数名称(字符串)调用函数
- aws-lambda - 带有代理的 Micronaut Lambda 无法从 json body io.micronaut.web.router.exceptions.UnsatisfiedRouteException 中解组对象
- java - toString 不输出,简单的层次类程序
- c++ - 如何迭代容器的前 N 个元素?
- selenium-webdriver - 如何编写xpath?
- html - 如何在字段集中正确显示错误消息
- java - java流:按字段分组并选择其他作为分组键
- math - 计算一条线相对于三个轴的欧拉角