我试图在phppgadmin上更改数据库名称,但我总是收到此错误:
<script language="js"><![CDATA[
var myValue = 12;
// create or update the property
mc.getEnvironment().getServerContextInformation().addProperty("GlobalProperty",myValue);
// get the property
var globalProperty = mc.getEnvironment().getServerContextInformation().getProperty("GlobalProperty");
// provide it's value to your mediation with $ctx:GlobalProperty
mc.setProperty("GlobalProperty",globalProperty);
]]></script>
除了我之外没有人访问过,所以我不理解这个错误。
如何更改数据库名称,或者即使有19个其他会话使用数据库时也强制它?
谢谢
答案 0 :(得分:0)
可能有一些自动连接。您可以使用以下命令首先终止与数据库的所有连接:
SELECT
pg_terminate_backend(pid)
FROM
pg_stat_activity
WHERE
-- don't kill my own connection!
pid <> pg_backend_pid()
-- don't kill the connections to other databases
AND datname = 'database_name'
;
在执行此查询之前,您必须REVOKE CONNECT权限以避免新连接:
REVOKE CONNECT ON DATABASE dbname FROM PUBLIC, username;
If you're using Postgres 8.4-9.1 use procpid instead of pid
SELECT
pg_terminate_backend(procpid)
FROM
pg_stat_activity
WHERE
-- don't kill my own connection!
procpid <> pg_backend_pid()
-- don't kill the connections to other databases
AND datname = 'database_name'
;
完成上述操作后,尝试重命名数据库。
参考:Kill a postgresql session/connection
<强>更新强>
为了将来参考,您应该能够:
- 从要重命名的数据库断开连接
\c postgres
- 强制断开所有其他客户端与数据库的重命名
SELECT pg_terminate_backend( pid )
FROM pg_stat_activity
WHERE pid <> pg_backend_pid( )
AND datname = 'name of database';
- 重命名数据库(它现在应该没有客户端)
ALTER DATABASE "name of database" RENAME TO "new name of database";
请注意,表pg_stat_activity列pid在9.2之前的版本中被命名为procpid。因此,如果您的PostgreSQL版本低于9.2,请使用procpid而不是pid。