将列添加到 table 时 Postgres 关系不存在?

Postgres relation does not exist when adding column to table?

我正在尝试创建一个模式并使用 node-postgres (pg) 通过 node 添加 tables。事件的基本顺序如下:

1. Create schema
2. Create table in schema
3. Create columns in table in schema

我可以验证架构和 table 的创建没有问题,但是在尝试将第一列添加到 table 时出现 relation does not exist 错误。用于创建列的查询字符串如下所示:

"ALTER TABLE " +
schemaName +
".process ADD COLUMN process_id bigint NOT NULL DEFAULT nextval('" +
schemaName +
".process_process_id_seq'::regclass)";

我已在 console log 中确认 schema name 变量与用于成功创建 table 的变量匹配。关于为什么会在此处抛出错误的任何想法?

序列需要事先创建。

但您也可以使用 bigserial 类型,它是 bigint 列的快捷方式,其中包含自动创建的序列和相应的 DEFAULT。大致如下:

"ALTER TABLE " +
schemaName +
".process ADD COLUMN process_id bigserial";

也许你被它迷住了。稍后,当创建 table/column 时,您再也看不到 ...serial,只能看到实际类型和 DEFAULT.

有关 ...serial 类型的更多信息,请参见 documentation