我试图解析toc.dat文件,当从不同的pg_dump版本转储相同的数据库时,我会看到不同的结果。在9.6
上,我与SCHEMA public postgres
保持一致,但没有11
pg_dump
的这一行。
有人知道为什么吗?无法找到任何关于这种行为的发布说明:
postgres db ~ $ /usr/lib/postgresql/11/bin/pg_dump --format=custom -d db -p 5432 --schema-only -f /tmp/test-11-dump
postgres db ~ $ pg_restore -l -v /tmp/test-11-dump | grep "SCHEMA public" -A 1 -B 1
; depends on: 205
22859; 0 0 ACL - SCHEMA public postgres
; depends on: 74 <--- no line with this id
postgres db ~ $ /usr/lib/postgresql/9.6/bin/pg_dump --format=custom -d db -p 5432 --schema-only -f /tmp/test-96-dump
postgres db ~ $ pg_restore -l -v /tmp/test-96-dump | grep "SCHEMA public" -A 1 -B 1
74; 2615 2200 SCHEMA - public postgres <--- this line is missing from prev one
22832; 0 0 COMMENT - SCHEMA public postgres
; depends on: 74
22833; 0 0 ACL - SCHEMA public postgres
; depends on: 74
postgres db ~ $ pg_restore --version
pg_restore (PostgreSQL) 11.15 (Ubuntu 11.15-1.pgdg18.04+1)
发布于 2022-05-24 14:45:00
请参见此提交转储,相关部分如下:
这具有明显的效果,即除了更新其ACL (如果具有非默认的ACL )之外,公共模式根本不会在输出中提及。
https://stackoverflow.com/questions/72364839
复制相似问题