将列添加到 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。
我正在尝试创建一个模式并使用 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。