postgresql - 如何为PostgreSQL创建一个恢复时不失败的只读备份用户
问题描述
几天来,我一直在尝试创建一个只能在我的 PostgreSQL 数据库中备份的只读用户。我用来调用 pg_dump 的方法是一个 .bat 文件,下面是下面的示例,我将如何在我的应用程序中实现它。
cxMemo1.Clear;
cxMemo1.Lines.Add('@Echo off ');
cxMemo1.Lines.Add('set PGUSER=backup');
cxMemo1.Lines.Add('set PGPASSWORD=backup');
cxMemo1.Lines.Add('c:');
cxMemo1.Lines.Add('cd C:\Program Files (x86)\PostgreSQL\10\bin\ ');
cxMemo1.Lines.Add('@echo "Loading..." ');
cxMemo1.Lines.Add('pg_dump.exe -h localhost -F custom -p 5432 -f ' +Path+ ' BDFOCOG');
cxMemo1.Lines.SaveToFile(ExtractFilePath(Application.ExeName) +'backup.bat');
ShellExecute(Application.Handle, nil, PChar('backup.bat'), nil, nil, SW_HIDE);
在图像 1 中,我尝试在使用只读的 postgres 超级用户进行备份后进行恢复,但数据已创建并且发生了此错误。
如何解决此问题以从我的数据库备份进行干净还原?
编辑 1 - 图 2 显示了当我使用 pg_restore 进行恢复时发生的错误,备份用户的 default_transection_read_only 属性设置为 true,错误指向数据库何时恢复外键以及其他更改。
编辑2 - 值得注意的是数据传输成功,所有这些数据和银行显然都在正常工作,我担心它可能损坏了一些数据,因为根据PostgreSql和pg_restore恢复没有成功。
解决方案
推荐阅读
- sql - AWS Glue 总是向 SQL Server 发送“select * ....”,为什么以及如何更改它?
- html - 如何从 Facebook 浏览器共享包含网页报价的链接到 Facebook 帖子?
- swift - 简单 SceneKit 游戏中的低 FPS,高等待可绘制
- spring-boot - 带有日期范围选择器的 Vue DataTable 来过滤日期
- java - Java - setXY(x1, y1) 和 new Object 的区别
- java - 对类定义的困惑
- python - ATM 代码厨师问题 if - else python 中的条件问题
- spring-boot - 执行 DDL 时出错“alter table compte 添加约束 FK2hw4shqsxc782lychpkr52lmv 外键
- reactjs - 无法读取“scrollTo”未定义的属性
- twilio - 来自非 twilio 号码的 Twilio 响应