【问题标题】:pg_dump ignoring table sequence?pg_dump 忽略表序列?
【发布时间】:2011-01-05 22:46:16
【问题描述】:

我最近一直在玩 PostgreSQL,但无法理解如何备份和恢复单个表。

我使用 pgadmin3 备份数据库中的单个表,以便将其复制到不同的服务器。当我尝试对文件执行 pg_restore 时,我收到错误消息,指出该序列不存在:

pg_restore: [archiver (db)] could not execute query: ERROR:  relation "businesses_id_seq" does not exist
    Command was: 
CREATE TABLE businesses (
    id integer DEFAULT nextval('businesses_id_seq'::regclass) NOT NULL,
    name character varyin...

看起来转储文件不包含我的自动递增列的序列。我如何让它包含它?

【问题讨论】:

    标签: postgresql pg-dump pg-restore


    【解决方案1】:

    仅按表转储 - 将仅转储表。除了表格之外,您还需要单独转储序列。

    如果你不知道你的序列,你可以在 psql 中用\d yourtable 列出它。您将在序列所在的行中看到如下内容:nextval('yourtable_id_seq'::regclass')

    然后从命令行,pgdump -t yourtable_id_seq

    http://www.postgresql.org/docs/9.0/static/app-pgdump.html

    【讨论】:

    • 你知道我是否可以在 -t 标志后指定一个逗号吗?像这样:pgdump -t mytable, mytabl_id_seq
    • 否,但您可以指定多个 -t 开关。像这样:pgdump -t mytable -t mytabl_id_seq
    猜你喜欢
    • 2014-10-04
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-01
    • 1970-01-01
    • 2011-08-13
    • 1970-01-01
    相关资源
    最近更新 更多