前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >windows 安装postgresql 14

windows 安装postgresql 14

作者头像
张善友
发布2022-12-23 08:37:44
7380
发布2022-12-23 08:37:44
举报
文章被收录于专栏:张善友的专栏张善友的专栏

开源数据库 PostgreSQL 是 1980 年以加利福尼亚大学为中心开发出来的 DBMS,与 MySQL 一样,都是世界上广泛应用的开源数据库(DB)。

本文将会介绍使用 64 位版的 Windows 安装程序(Win x86-64)在 Windows Server 2019(64 位)系统中安装 PostgreSQL 的步骤,请大家结合自身实际下载相应的安装程序。

数据库安装包下载地址:Download PostgreSQL (enterprisedb.com)

运行安装程序的时候,鼠标右键点击安装文件,然后选择“以管理员身份运行”,默认的安装路径是“C:\Program Files\PostgreSQL\14”,选择数据保存路径的,默认路径“C:\PostgreSQL\14\data” ,我们改到了F:\pgdata.

在接下来的数据库管理员密码设置画面中输入任意密码,点击“Next >”按钮。登录 PostgreSQL 时会用到这个密码,请大家务必牢记。 接下来会出现端口号设置画面,无需修改,保持默认的5432,直接点击“Next >”按钮。通常情况下保持默认选项即可。

接下来是 PostgreSQL 地区设置画面。选择默认值,有一次改成了“Chinese(Simplified),Singapore”,出现了下面的错误页面。

安装完成的时候出现了如下画面:

image
image

只好手工来完成最后一步:

  1. 切换到安装目录下的bin目录
  2. 管理员权限执行initdb "F:\pgdata"
  3. 如果服务未自动启动,使用pg_ctl start -D "F:\pgdata"启动服务
  4. 创建用户cmd执行createuser -s -r postgres
image
image

使用安装时设置的管理员密码登陆pgadmin(安装路径下/pgAdmin 4/bin/pgAdmin4.exe)

46ee43eea1a41c95e92f219a44483d9
46ee43eea1a41c95e92f219a44483d9

ERROR: character with byte sequence 0xe5 0x91 0xa8 in encoding "UTF8" has noequivalent in encoding"WIN1252"

通过修改PostgreSQL配置文件,在运行日志(不是WAL和提交日志)中输出SQL语句执行情况,可以准确定位到哪个表会引发错误。具体方法是:

  • 修改配置文件postgresql.conf,通常在$pgdata目录下,本例中是在F:\pgdata目录;
  • 找到“where to log”块,将logging_collector设置为on,这意味着开启运行日志,所在目录由log_directory参数指定;
  • 找到“what to log”块,将log_statement设置为mod或all,这意味着sql语句被记录到运行日志;
  • 仍在“when to log”块,确保log_min_error_statement为error或更低级别,以记录错误信息;因缺省值已是error,一般无须修改;
  • 仍在“when to log”块,确保log_min_message为info或更低级别,这样成功执行的sql语句所绑定的变量也能查到(可选);
  • 重启PostgreSQL,执行那个导入程序,此时运行日志已记录下执行的sql语句情况,根据报错信息即可具体定位是哪个表引起。

日志里看到如下的sql:

2022-12-22 08:19:23.510 UTC [1888] ERROR:  character with byte sequence 0xe5 0x91 0xa8 in encoding "UTF8" has no equivalent in encoding "WIN1252" 2022-12-22 08:19:23.510 UTC [1888] STATEMENT:  /*pga4dash*/      SELECT          pid,          datname,          usename,          application_name,          client_addr,          pg_catalog.to_char(backend_start, 'YYYY-MM-DD HH24:MI:SS TZ') AS backend_start,          state,          wait_event_type || ': ' || wait_event AS wait_event,          pg_catalog.pg_blocking_pids(pid) AS blocking_pids,          query,          pg_catalog.to_char(state_change, 'YYYY-MM-DD HH24:MI:SS TZ') AS state_change,          pg_catalog.to_char(query_start, 'YYYY-MM-DD HH24:MI:SS TZ') AS query_start,          pg_catalog.to_char(xact_start, 'YYYY-MM-DD HH24:MI:SS TZ') AS xact_start,          backend_type,          CASE WHEN state = 'active' THEN ROUND((extract(epoch from now() - query_start) / 60)::numeric, 2) ELSE 0 END AS active_since      FROM          pg_catalog.pg_stat_activity      WHERE          datname = (SELECT datname FROM pg_catalog.pg_database WHERE oid = 13754)ORDER BY pid

上面这个问题的原因在postgrsql 里是一个普遍的问题,由于客户端和服务器的编码不对。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-12-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档