如何登录到PostgreSQL数据库-会话终止后(用于复制数据库) [英] How to login to postgresql db - After session kill (for copy database)

查看:31
本文介绍了如何登录到PostgreSQL数据库-会话终止后(用于复制数据库)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试使用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,或者如果您在执行此操作的操作系统上,则使用某种图形用户界面方法。

这篇关于如何登录到PostgreSQL数据库-会话终止后(用于复制数据库)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆