我收到一个错误信息显示PostgreSQL不能够从一个终端服务会话中进行安装
很不幸,确实是这样。PostgreSQL的后台程序不能够从终端服务会话中运行,为了能够初始化数据库,安装程序需要启动一个独立的后台进程,因此安装程序需要从一个控制台中启动。如果你使用的是Windows Server 2003,你可以获取对真正控制台的远程存取权限, 为了做到这一点,可以通过执行mstsc /console程序来启动远程桌面连接,这会锁定服务器上的本地控制台而给你完全的控制权,在这种情况下,PostgreSQL的安装没有问题。
安装时我改变了目录,但PostgreSQL还是安装在缺省的目录
首先确认你更改了根目录的内容, PostgreSQL安装程序允许更改每一个模块的目录,如果你更改了根目录("PostgreSQL"),其他的子模块(如Database Server)将自动继承根目录的值作为缺省值,但是如果你只是更改了子模块的目录,系统还是会安装在缺省的目录。
在升级安装时,安装程序说我没有权限安装一个服务,但我是以管理员登录的
解决方法是首先卸载先前的版本,这并不会删除你的数据,然后确保将新版本安装到同一目录中,就可以解决这个问题了。需要注意的是这个方法仅仅适用于小的版本升级(如:8.0.1→8.0.2),因为它们不需要转储/重载(dump/reload)。
我收到一个错误说安装包无法打开
可能有两个原因。最可能的原因是你直接在ZIP文件中双击MSI所致,你必须将ZIP完全解压到一个临时目录中以后再运行MSI文件。另一个原因是你下载的文件已经被损坏了,可以尝试从另一个不同的镜像站点重新下载来解决问题。
常见运行错误
为何我在安装一个过程语言时会收到一个"dynamic load error"错误?
大多数情况下这表示与某个过程语言相关的DLL文件丢失,PostgreSQL 的DLL文件只能包含了该语言的入口调用,还需要该过程语言自身的DLL文件存在于系统的搜索路径PATH中。不同的过程语言需要的不同的DLL文件,详情可参见 安装指南 。
为了找出具体哪一个DLL文件丢失,你可以使用来自微软的依赖性检查工具,它在微软的支持软件工具包中,在一个单独的安装光盘上,只要运行了depends plpython.dll(对PL/python语言来说)就可以显示出哪一个DLL文件不存在了。
虽然我只启动了服务器一次但发现有很多的postgres.exe进程
这是正常情况。PostgreSQL使用多进程体系结构,在一个无用户连接的空系统中会有2至5个进程,一旦用户开始连接服务器,PostgreSQL的进程数就会增加。
我如何设置环境变量?
PostgreSQL使用环境变量来设定几项运行参数。 在常见的Windows版本中要改变一个环境变量,先选择“我的电脑”-->属性-->然后进入高级选项。注意此时有两组环境变量--一组是系统级的,所有用户均有效,一组是仅限当前用户生效的。如果你想让一个环境变量影响PostgreSQL服务,你必须改为系统级的变量,在修改过变量数据后,重新启动PostgreSQL服务程序。
尽管硬件性能强劲,我不能一次执行超过125个数据库并发连接
在作为一项服务运行时,你可能有大约125个并发连接不能成功的经历。这是由于PostgreSQL所使用的库文件需要操作系统的user32.dll从一个叫桌面堆内存区那里申请内存。堆内存区每次分配给一个非交互的连接会话大约为512KB。而每一个Postgres的进程需大约消耗3.2KB堆内存,这样再结合其他一些系统消耗就会在大约125个连接时消耗完堆内存。这种情况在从命令行启动PostgreSQL程序时不会发生(更精确地说,也会发生,不过连接数会变得非常高),因为交互式的会话一般会被分配高达3MB堆内存。
你可以根据微软知识库的说明,通过更改注册表中第三个SharedSection的值来增加非交互性桌面堆内存。注意这需要非常小心,因为过高的数值也会影响到系统的启动。
