pg_dump版本10.3开始明确地将模式名称添加到表名中。那么过去是什么
INSERT INTO table (id) VALUES (1);
现在是
INSERT INTO public.table (id) VALUES (1);
如何关闭它?我的问题是,我把它转储到你没有模式名称的mariadb。
答案 0 :(得分:1)
像我一样,如果只是您关心的INSERT语句,那么我认为这是安全的,并将从表中删除“公共”模式。
sed -i -e 's/^INSERT INTO public\./INSERT INTO /' <filename.sql>
它会在适当位置修改文件,所以要小心。
答案 1 :(得分:0)
我也搜索了这个切换器但它不存在。 之所以添加此行为,是因为 - https://wiki.postgresql.org/wiki/A_Guide_to_CVE-2018-1058:_Protect_Your_Search_Path
在我的工作中,我现在使用dump的新变体,在事务中重命名模式。
答案 2 :(得分:0)
在您的postgresql控制台(连接到数据库)中执行以下命令:
set search_path to public;
答案 3 :(得分:0)
如果您已安装Docker,则可以采取以下措施:
docker run -it postgres:10.2 pg_dump postgresql://user:pass@host/database
答案 4 :(得分:-3)
当然这只是linux的决定(不是postgres),但它可以帮助你,我想
sed -i 's/public.//g' your_dmp_file
P.S。我没有检查这个,可能你应该修理它