postgresql数据库备份后还原少表

问题

在其他电脑上备份导出pg数据库后,在自己的电脑上还原发现少了很多表。我使用的是dbeaver备份和还原。但是在创建表的时候使用的navicat
在还原数据库的时候dbeaver打印出来的log

pg_restore: 鍒涘缓TABLE "public.student"

pg_restore: 鏉ヨ嚜 TOC 璁板綍 435; 1259 41348 TABLE student postgres

pg_restore: 閿欒: could not execute query: 闁挎瑨顕�:  閸忓磭閮� "public.student_id_seq" 娑撳秴鐡ㄩ崷锟�

绗�2琛�    id bigint DEFAULT nextval('public.student...

                                 ^

Command was: CREATE TABLE public.student (

    id bigint DEFAULT nextval('public.student_id_seq'::regclass) NOT NULL,

    name character varying(255),

    addr character varying(255),

    age smallint

);

原因

通过log可以看到主键id的序列public.student_id_seq出现问题,导致表没有创建成功。
首先pgsql不像mysql一样能够自动设置主键自增,上面提到表是通过navicat创建的,在navicat中需要先创建一个序列再指定这个序列才可以。但是dbeaver如果想要设置列的主键自增需要设置列的类型为bigserial或serial,navicat没有这个类型。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

以后创建表的时候还是使用pgadmin或dbeaver吧,navicat对pg的支持并不是太好

解决办法

既然问题已经出现,总要有个解决办法

  1. 通过log找到缺失表的序列名,然后到序列中去创建序列,最后导入即可
    在这里插入图片描述

  2. 提前将所有的序列通过dll批量生成序列
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孤独的冥王星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值