0. 事情的起源
公司计划产出一版骨科用的假体规划软件,打包成一个可执行文件,以方便安装。 最开始的时候,软件被设计安装在特殊的电脑上;而这规划软件是从之前总的软件上裁剪出部分功能,且不想做大的改动,因此数据库就使用之前的数据库软件,连接方式等也不想有改动。 但是由于易用性和数据保密性的要求,不能让用户自己设置数据库密码并创建数据库。 因此就涉及到,多个数据库的自动安装与控制。
1. 测试的版本
操作系统:windows 10 专业版
安装方式 | 软件版本 |
---|
exe版 | 12.2-2 | 绿色版 | 12.8.1 |
2. postgresql数据库作为服务启动
将postgresql数据库作为服务启动,需要注册对应的服务。 exe版本会要求设置服务名,并开启开机启动服务。 对于绿色安装版本,切换到绿色数据库的解压目录,使用如下的命令:
bin\initdb -D "%PGDATA%" --locale=chinese-simplified_china.936 -E UTF-8 -U postgres -A password --pwfile="%PGSECRETPATH%"\pwfile
bin\pg_ctl register -N "PostgreSQL-SpecialName" -D "%PGDATA%"
如果两个都安装完成的话,系统中就存在两个服务了,包含postgresql-x64(假设这个是使用exe安装的服务名)和绿色版新增加的PostgreSQL-SpecialName。 经过测试,这两个服务是能同时启动并运行的。
3. 同时运行的服务相同的端口号
由于之前没有修改默认的配置,因此同时运行的这两个服务使用的端口号相同。 最开始的时候,我在网上查找资料,都没有说过类似的问题,一半最多就是提示设置成不同端口号。 但是这样能够运行起来的两个数据库服务,相同的端口号,那么我使用端口号访问数据库,会出现什么现象呢?
4. 数据库的访问
当两个服务同时运行时,使用端口号访问数据库,发现数据库是能够被访问的,访问的是其中一个数据库的内容。 停止能够访问到的数据库的服务,那么再访问时就能够访问到另一个运行的服务的数据库内容了。 如果再将停止掉的服务运行起来,发现后启动服务的数据库是不能被访问到的;但是停掉正在被访问数据库的服务,就能被访问到了。
5. 小结
- 同一台机器上能够安装多个postgresql数据库
- 不同postgresql数据库在同一台机器上要使用不同的服务名字才能都运行起来
- 同一台机器上能够运行使用相同端口的不同服务名称的postgresql数据库,但是对于数据的访问存在混淆,最好别这样做
|