PostgreSQL创建数据库时报错:ERROR: source database "template1" is being accessed by other users参考:https://blog.csdn.net/jueshengtianya/article/details/17420287?utm_source=blogxgwz1 一是,在创建数据库时为什么跟模板数据库template1扯上了关系 先看第一个,原来Postgresql在用initdb创建数据库集群时,将创建一个模板数据库template1,以后所有的数据库都将来源于模板数据库template1,其中也包括模板数据库template0. 换句话说,template1和templat0用于创建数据库,即Postgresql中用从模板数据库复制的方式创建一个新的数据库,而template1就是创建数据库的默认模板。 二是,postmaster与postgres进程之间的关系? 所以如果用户在创建数据库时不为数据库指定模板,那么将使用template1模板数据库。这便是对问题一的回答,下面来看第二个问题“postmaster与postgres进程之间的关系?”。 原来,postmaster是运行在服务器上的主进程(也称监听守护进程),而postgres是postmaster的子进程,这一点从上图中进行号也可以看出来(27113是postmaster的进程号,而27122是postmaster子进程之一),那么postmaster主进程在什么情况下将开启一个子进程呢? 首先,客户端想访问服务器中某数据库,客户端将调用接口库(如ODBC、libpq等)将用户的请求通过网络发送给主进程postmaster。 接着,当postmaster接收到客户端发送过来的用户请求后,它将启动一个新的后端进程postgres为用户服务,此后,postmaster就将与客户端的交互工作交由postgres服务进程,而有postgres来完成客户端所需要的各种操作。 三是,“192.168.20.104(1666)”是谁? |
|
来自: 明神月 > 《postgresql》