PostgreSQL(PostGIS)Docker容器导入dump无表但对象已存在
解决Docker PostGIS导入dump后表存在但\dt无法查看的问题
核心原因
你的表大概率创建在非public schema下,而\dt默认仅显示public schema中的表,导致你看不到;二次导入报错是因为表确实已经存在于某个schema中。
排查与解决步骤
查看所有schema下的表
执行PostgreSQL命令:\dt *.*这条命令会列出数据库中所有schema下的所有表,你应该能找到
accounts等表的身影。定位表所在的schema
如果想精准查询某张表的位置,执行SQL:SELECT table_name, table_schema FROM information_schema.tables WHERE table_name = 'accounts';结果会直接显示表所属的schema。
切换schema查看表
找到目标schema后,切换到该schema再执行\dt:SET search_path TO 你的目标schema名称; \dt此时就能看到该schema下的所有表了。
调整导入时的默认schema(可选)
如果希望表导入到指定schema(比如public),可以在执行\i dump.sql前先设置search_path:SET search_path TO public; \i dump.sql注意:如果dump文件中明确指定了schema(比如
CREATE TABLE my_schema.accounts (...)),这条设置不会生效,需要修改dump文件中的schema指定,或者确保目标schema存在。检查dump文件内容
打开dump.sql,搜索CREATE TABLE语句,确认是否带有schema前缀(比如my_schema.),这能直接确认表的预期存放位置。
内容的提问来源于stack exchange,提问作者tsvallender
相关产品推荐
相关产品推荐

