Winodows上使用PostgreSQL
时间:2010-08-19 来源:orcspirit
好吧,我承认在windows上使用PostgreSQL是一件非常蛋疼的事。
一、先从启动PostgresSQL服务讲起
在linux平台下,用root用户启动postgres的服务是完全没问题的。这点可以从手册写的 su -c 'pg_ctl start -D /usr/local/pgsql/data -l serverlog' postgres 得到充分的验证。
在windows上可就不是那么一回事的。
且看我下面的过程:
(1) 一般地登录windows都是用Administrator用户,相当于root用户。
C:\Documents and Settings\Administrator>
pg_ctl -D "E:\Program Files\PostgreSQL\8.3\data" -l logfile start
server starting
提示我的是正在启动好吧,到了下一个提示符我以为已经启动起来了。
结果:
E:\Program Files\PostgreSQL\8.3\data>pg_ctl -D "E:\Program Files\PostgreSQL\8.3\data" -l filelog status
pg_ctl: no server running
(2) 无奈只好用postgres用户来启动。
切换到postgres用户 runas /user:postgres cmd
打开了一个新命令提示符,具有postgres的权限。
嗯嗯嗯嗯~~~~~切换过来启动果然没问题….
二、在windows上Initdb
使用runas切换到postgres用户后执行
initdb -D /GreenAPP/data -E GBK
报告说:"GBK" 不是一个有效的服务器编码名字
又企图使用
initdb -D /GreenAPP/data --locale=zh_CN.GBK
报告说:无效的 locale 名字 "zh_CN.GBK"
并且说:数据库簇将带有 locale Chinese_People's Republic of China.936 初始化
windows里头没有locale的概念,用C吧:
initdb -E UTF8 --locale=C
三、再说在winodws上服务的问题
在windows上可以将postgresql的服务注册成一个可以随操作系统启动而启动的服务(通过services.msc可以查看),这样貌似可以解决用其他用户(比如Administrator)不能启动pg服务的问题。
如图:
C:\Documents and Settings\Administrator>pg_ctl register -N PostgreSQL8.3.3 -D "E:\Program Files\PostgreSQL\8.3\data"
注册成服务必须在管理员权限下执行。
双击该服务,可以配置能启动该服务的用户。