如何登录 postgresql 数据库 - 会话终止后(用于复制数据库)

2023-12-24

我尝试使用 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> or sudo service postgresql restart或者一些 GUI 方法(如果您使用的操作系统可以做到这一点)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何登录 postgresql 数据库 - 会话终止后(用于复制数据库) 的相关文章

随机推荐