gpt4 book ai didi

postgresql - 恢复我的数据库序列后从 Postgresql 中的列中删除

转载 作者:行者123 更新时间:2023-11-29 13:15:48 25 4
gpt4 key购买 nike

Postgresql 在恢复后失去了自动增量功能。我的数据库是在 Windows 10 (v 10.1) 上创建的,我将它恢复到 Ubuntu (v 9.6) 上的 Postgresql。现在我发布了问题,我看到版本不同。我没有使用任何晦涩的功能,只使用了表、函数和带有序列号的列。此外,恢复过程没有任何问题。我检查了转储选项,但找不到任何导致问题的原因。

使用 Pgadmin 右键单击​​表 > 脚本 > 在我的原始表上创建一个脚本会得到:

CREATE TABLE public.produto
(
produto_id integer NOT NULL DEFAULT nextval('produto_produto_id_seq'::regclass),
...

);

在我的服务器中,恢复的数据库。它似乎失去了功能。

CREATE TABLE public.produto
(
produto_id integer NOT NULL,
...

);

最佳答案

您在恢复数据库时没有检查错误;应该有一些。

像您这样的表的转储在 PostgreSQL v10 中看起来像这样(这是 10.3,在 10.1 中看起来略有不同,但这与本例无关):

CREATE TABLE public.produto (
produto_id integer NOT NULL
);

ALTER TABLE public.produto OWNER TO laurenz;

CREATE SEQUENCE public.produto_produto_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;

ALTER TABLE public.produto_produto_id_seq OWNER TO laurenz;

ALTER SEQUENCE public.produto_produto_id_seq
OWNED BY public.produto.produto_id;

ALTER TABLE ONLY public.produto
ALTER COLUMN produto_id
SET DEFAULT nextval('public.produto_produto_id_seq'::regclass);

现在的问题是 AS integer 被引入到 PostgreSQL v10 中的 CREATE SEQUENCE 中,因此该语句将在 9.6 中因语法错误而失败。

后果是什么?

  • 表的创建与第一条语句中的一样。

  • 创建序列的第三条语句失败。

  • 以下所有需要序列的语句也会失败。

注意:不支持使用dump和restore降级PostgeSQL。

解决方案是手动编辑转储直到它工作,特别是你必须删除 CREATE SEQUENCE 中的 AS integerAS bigint 子句

关于postgresql - 恢复我的数据库序列后从 Postgresql 中的列中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49235621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com