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

How to login to postgresql db - After session kill (for copy database)

我尝试使用 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();

现在我们 none 人能够 login/connect 返回数据库。

当我提供以下命令时

psql -h 192.xx.xx.x -p 9763 -d originaldb -U postgres

它提示输入密码,但在输入密码后,return 没有任何响应

我可以理解为什么会这样吗?我怎样才能连接到数据库?我如何restart/make系统让我们重新登录?

有人可以帮助我们吗?

听起来好像有什么东西在共享目录上持有访问排他锁,例如 pg_database。如果是这种情况,那么在释放该锁之前,没有人能够登录。不过,我认为您 运行 的会话终止代码不会导致这种情况。也许只是巧合。

如果找不到活动会话,您可以尝试使用系统工具来弄清楚发生了什么,例如 ps -efl|fgrep postgre。或者您可以使用您通常使用的任何方法重新启动整个数据库实例,例如 pg_ctl restart -D <data_directory>sudo service postgresql restart 或某些 GUI 方法(如果您使用的是 OS ) .