sql - 如何登录到 postgresql db - 会话终止后(用于复制数据库)
问题描述
我尝试使用 postgresql 服务器在同一服务器内复制数据库
我尝试了以下查询
CREATE DATABASE newdb WITH TEMPLATE originaldb OWNER dbuser;
并得到以下错误
ERROR: source database "originaldb" is being accessed by 1 other user
所以,我执行了下面的命令
SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'originaldb' AND pid <> pg_backend_pid();
现在我们都无法登录/连接回数据库。
当我提供以下命令时
psql -h 192.xx.xx.x -p 9763 -d originaldb -U postgres
它提示输入密码,输入密码后,它不返回任何响应
我可以理解为什么会这样吗?如何连接到数据库?如何重新启动/使系统让我们重新登录?
有人可以帮助我们吗?
解决方案
听起来有些东西在共享目录(例如 pg_database)上持有访问排他锁。如果是这种情况,那么在该锁被释放之前,任何人都无法登录。不过,我认为您运行的会话终止代码不会导致这种情况。也许这只是一个巧合。
如果找不到活动会话,可以尝试使用系统工具来找出发生了什么,例如ps -efl|fgrep postgre
. 或者,您可以使用通常用于执行此操作的任何方法来重新启动整个数据库实例,例如pg_ctl restart -D <data_directory>
或sudo service postgresql restart
某些 GUI 方法(如果您在执行此操作的操作系统上)。
推荐阅读
- networking - 在同一子网上配置 2 个 NIC
- lazy-loading - JS Swiper:延迟加载问题 + 图片标题不适用于淡入淡出效果
- javascript - 当我在visualstudiocode中输入我的discord bot令牌并在命令提示符下运行它时它不起作用
- c++ - 特征,不能比较相同类型的矩阵
- javascript - 使用脚本功能时,Nodemailer 传输器似乎中断
- assembly - ARMv7 模拟器的 internal_relocation 错误
- c# - 将 XLS 转换为 PDF:GetBytes() 期间出现“数据索引必须是字段中的有效索引”异常
- windows - 在 IIs 10 上设置 AppPool,keySet 不存在
- python - 使用正则表达式查找字符串模式并将结果附加到列表中
- javascript - 从 markdown frontmatter 变量渲染列表