Windows下运行Postgresql,进行初始化

在安装Postgresql后要先进行初始化,对于odoo系统来说更是无法直接调用,本篇是我个人在进行初始化时遇到的问题与解决办法,在此记录下来。

安装postgresql后用cmd打开

win+R打开cmd,切换到Postgresql安装目录下的bin,同时找到安装时的数据库目录,我这里是D:\Users\Gwh\Program\Postgresql.14\data,运行

D:\Users\Gwh\Program\Postgresql.14\bin>initdb.exe -D D:\Users\Gwh\Program\Postgresql.14\data -E UTF-8 -U postgres -W
属于此数据库系统的文件宿主为用户 "Gwh".
此用户也必须为服务器进程的宿主.
数据库簇将使用本地化语言 "Chinese (Simplified)_China.936"进行初始化.
initdb: 无法为本地化语言环境"Chinese (Simplified)_China.936"找到合适的文本搜索配置
缺省的文本搜索配置将会被设置到"simple"

禁止为数据页生成校验和.

输入新的超级用户口令:
再输入一遍:

initdb: 错误: 目录"D:/Users/Gwh/Program/Postgresql.14/data"已存在,但不是空的
如果您想创建一个新的数据库系统, 请删除或清空
目录 "D:/Users/Gwh/Program/Postgresql.14/data" 或者运行带参数的 initdb
而不是 "D:/Users/Gwh/Program/Postgresql.14/data".

发现显示这个data已经存在,然后我们将data换成data1

D:\Users\Gwh\Program\Postgresql.14\bin>initdb.exe -D D:\Users\Gwh\Program\Postgresql.14\data1 -E UTF-8 -U postgres -W
属于此数据库系统的文件宿主为用户 "Gwh".
此用户也必须为服务器进程的宿主.
数据库簇将使用本地化语言 "Chinese (Simplified)_China.936"进行初始化.
initdb: 无法为本地化语言环境"Chinese (Simplified)_China.936"找到合适的文本搜索配置
缺省的文本搜索配置将会被设置到"simple"

禁止为数据页生成校验和.

输入新的超级用户口令:
再输入一遍:

创建目录 D:/Users/Gwh/Program/Postgresql.14/data1 ... initdb: 错误: 无法创建目录 "D:/Users/Gwh/Program/Postgresql.14/data1": Permission denied

发现还是显示错误,无法创建

解决:

Windows下运行Postgresql,进行初始化_第1张图片

这是由于data 目录没有权限,那么按上述步骤将Postgresql文件夹的权限调整为全部人都有所有权限。

再次运行创建data1

D:\Users\Gwh\Program\Postgresql.14\bin>initdb.exe -D D:\Users\Gwh\Program\Postgresql.14\data1 -E UTF-8 -U postgres -W
属于此数据库系统的文件宿主为用户 "Gwh".
此用户也必须为服务器进程的宿主.
数据库簇将使用本地化语言 "Chinese (Simplified)_China.936"进行初始化.
initdb: 无法为本地化语言环境"Chinese (Simplified)_China.936"找到合适的文本搜索配置
缺省的文本搜索配置将会被设置到"simple"

禁止为数据页生成校验和.

输入新的超级用户口令:
再输入一遍:

创建目录 D:/Users/Gwh/Program/Postgresql.14/data1 ... 成功
正在创建子目录 ... 成功
选择动态共享内存实现 ......windows
选择默认最大联接数 (max_connections) ... 100
选择默认共享缓冲区大小 (shared_buffers) ... 128MB
选择默认时区 ... Asia/Shanghai
创建配置文件 ... 成功
正在运行自举脚本 ...成功
正在执行自举后初始化 ...成功
同步数据到磁盘...成功

initdb: 警告: 为本地连接启用"trust"身份验证
你可以通过编辑 pg_hba.conf 更改或你下次
执行 initdb 时使用 -A或者--auth-local和--auth-host选项.

成功。您现在可以用下面的命令开启数据库服务器:

    pg_ctl -D ^"D^:^\Users^\Gwh^\Program^\Postgresql^.14^\data1^" -l 日志文件 start

显示成功!

现在执行启动postgresql指令

  • 执行:

D:\Users\Gwh\Program\Postgresql.14\bin>pg_ctl.exe -D "D:\Users\Gwh\Program\Postgresql.14\data1" -l "D:\Users\Gwh\Program\Postgresql.14\data1\logfile.log" start
等待服务器进程启动 ..... 完成
服务器进程已经启动

注意!我这里并未用成功之后的命令启动,因为一直报错,且好像不要出现中文!

这里补充一下其他pg_ctl命令:

  • 停止:

pg_ctl.exe -D "D:..\data" -l "D:..\data\logfile.log" stop
  • 重启:

pg_ctl.exe -D "D:..\data" -l "D:..\data\logfile.log" restart

参数: -D:指定数据库存放目录启动 -l:指定本次日志存放位置

用cmd连接数据库

执行以下命令:psql -U postgres

D:\..\Postgresql.14\bin>psql -U postgres
psql (14.6)
输入 "help" 来获取帮助信息.
postgres=#

一般会这样显示,就说明成功了。

执行,\l 查看一下当前所有数据库,一般初始化后只有 postgres、template0、template1 三个库才是对的。

postgres=# \l
                                                        数据库列表
   名称    |  拥有者  | 字元编码 |            校对规则            |             Ctype              |       存取权限
-----------+----------+----------+--------------------------------+--------------------------------+-----------------------
 postgres  | postgres | UTF8     | Chinese (Simplified)_China.936 | Chinese (Simplified)_China.936 |
 template0 | postgres | UTF8     | Chinese (Simplified)_China.936 | Chinese (Simplified)_China.936 | =c/postgres          +
           |          |          |                                |                                | postgres=CTc/postgres
 template1 | postgres | UTF8     | Chinese (Simplified)_China.936 | Chinese (Simplified)_China.936 | =c/postgres          +
           |          |          |                                |                                | postgres=CTc/postgres
(3 行记录)


postgres=#

到此就初始化成功。 \q可退出

你可能感兴趣的:(postgresql,数据库,database,数据库开发)