Postgres 在创建数据库时卡住了?

Leo*_*ang 7 postgresql

我刚刚在 WSL 上的 Ubuntu 20 上安装了 Postgres。以下两项都将永远卡住:

CREATE DATABASE foo
WITH
OWNER = postgres      
ENCODING = 'UTF8'     
CONNECTION LIMIT = -1;
Run Code Online (Sandbox Code Playgroud)

和:

sudo -u postgres createdb foo
Run Code Online (Sandbox Code Playgroud)

日志没有任何内容:

postgres@postgres ERROR:  canceling statement due to user request
postgres@postgres STATEMENT:  CREATE DATABASE foo
            WITH
            OWNER = postgres
            ENCODING = 'UTF8'
            CONNECTION LIMIT = -1;
Run Code Online (Sandbox Code Playgroud)

造成这种情况的可能原因有哪些?

重新启动 Postgres 或重新启动计算机没有帮助,并且没有锁。我还尝试手动杀死每个锁。

小智 6

我和你有同样的问题。看来和wsl版本有关。我运行的是 wsl 1,所以我必须卸载 ubuntu 20.04 wsl,然后使用以下命令将版本设置为 2

wsl --set-default-version 2
Run Code Online (Sandbox Code Playgroud)

然后再次安装 ubuntu 20.04 wsl。现在一切似乎都井然有序,我可以毫无问题地创建数据库。

  • 我必须使用命令“wsl --set-default-version *distribution_name* 2”,否则它在我的计算机上不起作用。使用命令“wsl -l -v”可以查看哪个发行版安装了哪个 wsl 版本。 (2认同)

Lau*_*lbe 2

当语句挂起时,连接到postgres数据库并查找挂起连接的和pg_stat_activitywait_eventwait_event_type

它很可能正在等待锁。在这种情况下,请结束持有锁的事务。