注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

PostgreSQL 中文网

 
 
 

日志

 
 

How to change PostgreSQL database name ?  

2011-05-24 10:00:49|  分类: Postgres基础 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

         
           今天需要对一测试数据库进行更改数据库名,  操作过程中遇到一点小插曲,
做下记录。

--1 查看当前数据库列表,
postgres=# \l
                              List of databases
   Name    |  Owner   | Encoding | Collation | Ctype |   Access privileges  
-----------+----------+----------+-----------+-------+-----------------------
 postgres  | postgres | UTF8     | C         | C     |
 skytmp    | skytmp   | UTF8     | C         | C     |
 template0 | postgres | UTF8     | C         | C     | =c/postgres          +
           |          |          |           |       | postgres=CTc/postgres
 template1 | postgres | UTF8     | C         | C     | =c/postgres          +
           |          |          |           |       | postgres=CTc/postgres
 test      | test     | UTF8     | C         | C     |
(5 rows)

     目标: 将数据库 skytmp,  更名为 skytmp_test。

--2 对数据库 skytmp 进行更名
postgres=# \h alter database;
Command:     ALTER DATABASE
Description: change a database
Syntax:
ALTER DATABASE name [ [ WITH ] option [ ... ] ]

where option can be:

    CONNECTION LIMIT connlimit

ALTER DATABASE name RENAME TO new_name

ALTER DATABASE name OWNER TO new_owner

ALTER DATABASE name SET TABLESPACE new_tablespace

ALTER DATABASE name SET configuration_parameter { TO | = } { value | DEFAULT }
ALTER DATABASE name SET configuration_parameter FROM CURRENT
ALTER DATABASE name RESET configuration_parameter
ALTER DATABASE name RESET ALL

postgres=# alter database skytmp rename to skytmp_test;
ERROR:  database "skytmp" is being accessed by other users
DETAIL:  There are 49 other session(s) using the database.
postgres=#

  备注: 当对数据库进行更名时, pg抛出了以上 Error, 根据 Error 内容, 很容易看懂意思
             是当前有 49 个 session 还连着数据库。

--3 查看 PostgreSQL 进程, 果然还有很多用户进程
postgres@db-192-168-173-63-> ps -ef | grep post
postgres 18942 20802  0 08:54 ?        00:00:00 postgres: skytmp skytmp xxxx.xxx.xx.xx(41538) idle
postgres 18943 20802  0 08:54 ?        00:00:00 postgres: skytmp skytmp xxxx.xxx.xx.xx(41539) idle
postgres 18944 20802  0 08:54 ?        00:00:00 postgres: skytmp skytmp xxxx.xxx.xx.xx(41540) idle
postgres 18945 20802  0 08:54 ?        00:00:00 postgres: skytmp skytmp xxxx.xxx.xx.xx(41541) idle
postgres 18946 20802  0 08:54 ?        00:00:00 postgres: skytmp skytmp xxxx.xxx.xx.xx(41542) idle
postgres 18947 20802  0 08:54 ?        00:00:00 postgres: skytmp skytmp xxxx.xxx.xx.xx(41543) idle
postgres 18948 20802  0 08:54 ?        00:00:00 postgres: skytmp skytmp xxxx.xxx.xx.xx(41544) idle
postgres 18949 20802  0 08:54 ?        00:00:00 postgres: skytmp skytmp xxxx.xxx.xx.xx(41545) idle
postgres 18950 20802  0 08:54 ?        00:00:00 postgres: skytmp skytmp xxxx.xxx.xx.xx(41546) idle
postgres 18951 20802  0 08:54 ?        00:00:00 postgres: skytmp skytmp xxxx.xxx.xx.xx(41547) idle
root     19088 19059  0 09:05 pts/1    00:00:00 su - postgres
postgres 19089 19088  0 09:05 pts/1    00:00:00 -bash
root     19209 19181  0 09:09 pts/2    00:00:00 su - postgres
postgres 19210 19209  0 09:09 pts/2    00:00:00 -bash
postgres 19273 19089  0 09:12 pts/1    00:00:00 psql -h 127.0.0.1
postgres 19318 20802  0 09:16 ?        00:00:05 postgres: skytmp skytmp xxxx.xxx.xx.xx(49122) idle
postgres 19319 20802  0 09:16 ?        00:00:05 postgres: skytmp skytmp xxxx.xxx.xx.xx(49124) idle
postgres 19320 20802  0 09:16 ?        00:00:05 postgres: skytmp skytmp xxxx.xxx.xx.xx(49125) idle
postgres 19321 20802  0 09:16 ?        00:00:14 postgres: skytmp skytmp xxxx.xxx.xx.xx(49127) idle
postgres 19322 20802  0 09:16 ?        00:00:15 postgres: skytmp skytmp xxxx.xxx.xx.xx(49128) idle
postgres 19323 20802  0 09:16 ?        00:00:15 postgres: skytmp skytmp xxxx.xxx.xx.xx(49129) idle
postgres 19324 20802  0 09:16 ?        00:00:05 postgres: skytmp skytmp xxxx.xxx.xx.xx(49130) idle
postgres 19325 20802  0 09:16 ?        00:00:15 postgres: skytmp skytmp xxxx.xxx.xx.xx(49131) idle
postgres 19326 20802  0 09:16 ?        00:00:15 postgres: skytmp skytmp xxxx.xxx.xx.xx(49132) idle
postgres 19327 20802  0 09:16 ?        00:00:05 postgres: skytmp skytmp xxxx.xxx.xx.xx(49133) idle
postgres 19328 20802  0 09:16 ?        00:00:05 postgres: skytmp skytmp xxxx.xxx.xx.xx(49134) idle
postgres 19329 20802  0 09:16 ?        00:00:14 postgres: skytmp skytmp xxxx.xxx.xx.xx(49135) idle
postgres 19330 20802  0 09:16 ?        00:00:15 postgres: skytmp skytmp xxxx.xxx.xx.xx(49136) idle
postgres 19331 20802  0 09:16 ?        00:00:15 postgres: skytmp skytmp xxxx.xxx.xx.xx(49137) idle
postgres 19332 20802  0 09:16 ?        00:00:05 postgres: skytmp skytmp xxxx.xxx.xx.xx(49138) idle
postgres 19333 20802  0 09:16 ?        00:00:15 postgres: skytmp skytmp xxxx.xxx.xx.xx(49139) idle
postgres 19334 20802  0 09:16 ?        00:00:05 postgres: skytmp skytmp xxxx.xxx.xx.xx(49140) idle
postgres 19335 20802  0 09:16 ?        00:00:05 postgres: skytmp skytmp xxxx.xxx.xx.xx(49141) idle
postgres 19336 20802  0 09:16 ?        00:00:15 postgres: skytmp skytmp xxxx.xxx.xx.xx(49142) idle
postgres 19337 20802  0 09:16 ?        00:00:14 postgres: skytmp skytmp xxxx.xxx.xx.xx(49143) idle
postgres 19338 20802  0 09:16 ?        00:00:05 postgres: skytmp skytmp xxxx.xxx.xx.xx(49144) idle
postgres 19339 20802  0 09:16 ?        00:00:05 postgres: skytmp skytmp xxxx.xxx.xx.xx(49145) idle
postgres 19340 20802  0 09:16 ?        00:00:14 postgres: skytmp skytmp xxxx.xxx.xx.xx(49146) idle
postgres 19341 20802  0 09:16 ?        00:00:15 postgres: skytmp skytmp xxxx.xxx.xx.xx(49147) idle
postgres 19342 20802  0 09:16 ?        00:00:05 postgres: skytmp skytmp xxxx.xxx.xx.xx(49148) idle
postgres 19343 20802  0 09:16 ?        00:00:15 postgres: skytmp skytmp xxxx.xxx.xx.xx(49149) idle
postgres 19344 20802  0 09:16 ?        00:00:15 postgres: skytmp skytmp xxxx.xxx.xx.xx(49150) idle
postgres 19345 20802  0 09:16 ?        00:00:05 postgres: skytmp skytmp xxxx.xxx.xx.xx(49151) idle
postgres 19346 20802  0 09:16 ?        00:00:05 postgres: skytmp skytmp xxxx.xxx.xx.xx(49152) idle
postgres 19347 20802  0 09:16 ?        00:00:05 postgres: skytmp skytmp xxxx.xxx.xx.xx(49153) idle
root     19428 19210  0 09:24 pts/2    00:00:00 su - postgres
postgres 19429 19428  0 09:24 pts/2    00:00:00 -bash
postgres 19829 20802  1 09:46 ?        00:00:01 postgres: postgres postgres 127.0.0.1(18376) idle 
postgres 19836 19429  0 09:48 pts/2    00:00:00 ps -ef
postgres 19837 19429  0 09:48 pts/2    00:00:00 grep post
postgres 20802     1  0 Mar24 ?        00:01:18 /opt/pgsql/bin/postgres -D /opt/pgdata/1921/pg_root
postgres 20803 20802  0 Mar24 ?        00:00:00 postgres: logger process                          
postgres 20805 20802  0 Mar24 ?        00:04:33 postgres: writer process                          
postgres 20806 20802  0 Mar24 ?        00:03:11 postgres: wal writer process                      
postgres 20807 20802  0 Mar24 ?        00:08:11 postgres: stats collector process                 
postgres 23570 20802  0 May20 ?        00:00:27 postgres: skytmp skytmp xxxx.xxx.xx.xx(36165) idle
postgres 23624 20802  0 May20 ?        00:00:17 postgres: skytmp skytmp xxxx.xxx.xx.xx(60897) idle
postgres 23625 20802  0 May20 ?        00:00:24 postgres: skytmp skytmp xxxx.xxx.xx.xx(60898) idle
postgres 23626 20802  0 May20 ?        00:00:23 postgres: skytmp skytmp xxxx.xxx.xx.xx(60899) idle
postgres 23627 20802  0 May20 ?        00:00:30 postgres: skytmp skytmp xxxx.xxx.xx.xx(60900) idle
postgres 23628 20802  0 May20 ?        00:00:14 postgres: skytmp skytmp xxxx.xxx.xx.xx(60901) idle
postgres 23629 20802  0 May20 ?        00:00:11 postgres: skytmp skytmp xxxx.xxx.xx.xx(60902) idle
postgres 23630 20802  0 May20 ?        00:00:19 postgres: skytmp skytmp xxxx.xxx.xx.xx(60903) idle

     于是通知开发人员,停应用。


--4 停应用后再次更改数据库名
postgres=# alter database skytmp rename to skytmp_test;
ALTER DATABASE

postgres=# \l
                               List of databases
    Name     |  Owner   | Encoding | Collation | Ctype |   Access privileges  
-------------+----------+----------+-----------+-------+-----------------------
 postgres    | postgres | UTF8     | C         | C     |
 skytmp_test | skytmp   | UTF8     | C         | C     |
 template0   | postgres | UTF8     | C         | C     | =c/postgres          +
             |          |          |           |       | postgres=CTc/postgres
 template1   | postgres | UTF8     | C         | C     | =c/postgres          +
             |          |          |           |       | postgres=CTc/postgres
 test        | test     | UTF8     | C         | C     |
(5 rows)

     停应用后, 数据库更名成功。

  评论这张
 
阅读(27007)| 评论(2)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016