Postgresql-新建\删除数据库-异常 DETAIL: There are 3 other sessions using the database.
场景描述:
异常1:
postgres@f644d67d23c6:~$ psql psql: FATAL: database "postgres" does not exist
解决方式:Navicat连接数据库,执行:
CREATE USER postgres SUPERUSER;
异常2: 执行如下创建命令的时候报错:
template1=# CREATE DATABASE customs_data OWNER admin; ERROR: source database "template1" is being accessed by other users DETAIL: There are 3 other sessions using the database.
处理方式:
登录数据库所在服务器,命令行连接数据库:
psql template1
确认谁在连接使用 template1:
select * from pg_stat_activity where DATNAME = 'template1';
将相应连接pid进程关闭:
select pg_terminate_backend(1446);
template1=# select * from pg_stat_activity where DATNAME = 'template1'; datid | datname | pid | usesysid | usename | application_name | client_addr | client_hostname | client_port | backend_start| xact_start | query_start | state_change | waiting | state | backend_xid | backend_xmin | query -------+----------+------+----------+---------+------------------+---------- --+-----------------+-------------+---------------------------+----------------------------+---------+--------+-------------+--------------+-------+ 1 |template1 | 1693 | 17302 |postgres | psql | | | -1 | 2021-01-25 09:23:03.940082+00 | 2021-01-25 09:23:39.727448+00 | 2021-01-25 09:23:39.727448+00 | 2021-01-25 09:23:39.727452+00 | f | active | | 7713874 | select * from pg_stat_activity where DATNAME = 'template1'; 1 | template1 | 1446 | 10 | admin | | 222.209.33.183 | | 57668 | 2021-01-25 08:49:10.710847+00 | | 2021-01-25 08:49:22.730209+00 | 2021-01-25 08:49:22.755726+00 | f | idle | | | SELECT rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolc atupdate, rolcanlogin, rolconnlimit, rolvaliduntil, rolconfig, oid FROM pg_roles (2 rows) template1=# SELECT pg_terminate_backend(1446); pg_terminate_backend ---------------------- t (1 row)
然后再次执行创建数据库命令&授权命令:
template1=# CREATE DATABASE customs_data OWNER admin; CREATE DATABASE template1=# GRANT ALL PRIVILEGES ON DATABASE customs_data TO admin; GRANT
注意:另一种情况drop删除数据库时,也可能出现出现该异常,但是处理的时候,一定要谨慎,因为涉及删除drop数据库。
postgres=# drop database hnair; ERROR: database "hnair" is being accessed by other users DETAIL: There is 1 other session using the database.