跳到主要内容

PostgreSQL 故障排除

PostgreSQL 使用指南...

常见 PostgreSQL 任务及完整说明的查找位置。

让 PostgreSQL 运行更快

PostgreSQL 的性能主要取决于磁盘速度和可用内存。提升最大的改进是使用固态硬盘(SSD);7200 RPM 硬盘可以接受,但不建议使用 5400 RPM 硬盘。

更新 PostgreSQL

PokerTracker 4 支持 PostgreSQL 9.6 或更高版本(我们推荐 PostgreSQL 16)。如需升级到更新版本,请按以下专门指南操作:

在更新之前,请务必备份您的数据库

在 pgAdmin 4 中备份和恢复

PokerTracker 4 内置了备份和恢复功能——请尽可能使用它。下面的外部 pgAdmin 4 方法仅适用于少数情况,即内置工具无法访问您的数据库,例如 PokerTracker 4 运行在虚拟机中,而 PostgreSQL 安装在宿主操作系统上。(这种情况请参阅网络指南。)

备注

下面的截图显示的是较旧版本的 pgAdmin。pgAdmin 4 中的步骤是相同的。

使用 pgAdmin 4 备份数据库

  1. 打开 pgAdmin 4。

    Windows:开始 > PostgreSQL > pgAdmin 4。 macOS:/Applications/pgAdmin 4

  2. 连接到服务器。

    Browser 树中,展开 Servers > PostgreSQL 并连接。如果系统要求输入密码,默认密码是 dbpass;另一个常用密码是 postgrespass

  3. 展开 Databases 并选择您的数据库。

    右键点击要备份的数据库,然后选择 Backup...

    pgAdmin 4 database backup
  4. 选择备份文件名和位置。

    输入路径和文件名,或点击右侧的浏览按钮("...")来选择备份的位置和文件名。

    其余字段保持默认设置。

    Backing up a PT4 Database in pgAdmin 4
  5. 点击 Backup 按钮开始。

    备份开始以及完成后,您会在 pgAdmin 右下角看到一个弹窗。

    pgAdmin 4 database backup started and completed

使用 pgAdmin 4 恢复数据库

  1. 创建一个新数据库。

    Browser 树中,右键点击 Databases,然后选择 Create > Database...

    pgAdmin 4 create database
  2. 输入数据库名称,然后点击 Save。

    pgAdmin 4 create database name
  3. 将备份恢复到新数据库中。

    右键点击新数据库并选择 Restore...

    pgAdmin 4 restore database
  4. 选择您之前创建的备份文件。

    pgAdmin 4 restore - select backup file
  5. 点击 Restore。

    无需进行其他更改。恢复过程开始和完成时,pgAdmin 会在屏幕右下角显示弹窗。

    pgAdmin 4 restore started & completed

添加一个手动恢复的数据库

  1. 打开 数据库 > 数据库管理 窗口,然后点击 新建

  2. 启用 此数据库已存在,点击 浏览数据库,并选择你刚刚还原的数据库。

    Configure a restored PT4 database

问题

最常见的 PostgreSQL 错误解决方案。

无法登录数据库

错误:无法连接到服务器 / 连接被拒绝

unable to login to database (PT4_xxxx_xx_xx_xxxxxx) - reason: could not connect to server: connection refused (0x0000274D/10061) Is the server running on host "localhost" and accepting TCP/IP connections on port 5432?

这通常表示 PostgreSQL 服务未运行。请重启它——参见重启 PostgreSQL 服务器

如果重启无效,可能是残留的 postmaster.pid 文件阻止了启动。在停止 PostgreSQL 服务后,在数据文件夹中查找 postmaster.pid(Windows:C:\Program Files\PostgreSQL\16\data;macOS:/Library/PostgreSQL/16/data)并将其删除,然后重启电脑。请将 16 替换为你安装的版本。只有在 PostgreSQL 服务已停止时,才删除 postmaster.pid

错误:没有 pg_hba.conf 条目

unable to login to database (PT4 DB). Reason: FATAL: no pg_hba.conf entry for host "::1", user "postgres", database "PT4 DB", SSL off

编辑 pg_hba.conf 文件。

你必须以管理员身份编辑 pg_hba.conf 文件。右键单击 Notepad 图标并选择 以管理员身份运行 来启动 记事本。点击 文件 > 打开 并选择 pg_hba.conf 文件,通常位于 C:\Program Files\PostgreSQL\16\data\pg_hba.conf

滚动到底部,并完全按照这里显示的内容添加这一行:

host all all ::1/128 md5

保存文件并退出记事本。要使更改生效,请重启电脑,或者点击 开始 > 程序 > PostgreSQL > 重新加载配置

安装或运行 PostgreSQL 时出现问题

安装、运行或联网使用 PostgreSQL 时出现的问题,通常是由安全软件阻止访问造成的。请查看防火墙故障排除指南,确认 PokerTracker 4 和 PostgreSQL 拥有完整访问权限。

无法连接 - 用户名或密码错误

如果你在安装 PokerTracker 4 之前已经在电脑上安装过 PostgreSQL,请使用当时设置的密码。如果你之前使用过其他跟踪器,请尝试 postgrespass;如果你之前安装过其他版本的 PokerTracker,默认密码可能是 dbpass

如果你记不住密码,而且默认选项也不起作用,你可以将 PostgreSQL 配置为不要求来自本机的连接输入密码:

但从除本机以外的任何地方访问服务器时,仍然需要密码。

你必须以管理员身份编辑 pg_hba.conf 文件。右键单击 Notepad 图标并选择 以管理员身份运行 来启动 记事本。点击 文件 > 打开 并选择 pg_hba.conf 文件,通常位于 C:\Program Files\PostgreSQL\16\data\pg_hba.conf

滚动到底部,将所有 md5scram-sha-256 实例都替换为 trust

保存文件并退出记事本。要使更改生效,请重启电脑,或者点击 开始 > 程序 > PostgreSQL > 重新加载配置

无法导入手牌

如果你看到类似这样的错误:

Unable to import hand (#18202934050). Reason: Unable to execute query: COPY tourney_holdem_hand_summary FROM STDIN;; Reason: Fatal Error (ERROR: could not read block 0 of relation 1663/16438/16742: Invalid argument CONTEXT: COPY tourney_holdem_hand_summary, line 1: "54551 100 736 3 971 18202934050 2008/06/17 20:55:42 2008/06/17 17:22:44 9 2 2 2 1500.00 1500.00 1500..." )

...或者这样的:

Unable to import hand (#7651813545). Reason: Unable to execute query: COPY holdem_hand_player_statistics FROM STDIN;; Reason: Fatal Error (ERROR: index "hhps:idx5-id_session" contains unexpected zero page at block 0 HINT: Please REINDEX it. CONTEXT: COPY holdem_hand_player_statistics, line 1: "70112 696 696 0 2 8819 2008/08/15 04:05:59 8 f f 0 f 0 f f f f f 0 f 0 t f f t f 0 f 0 t f t t f 0 f..." )

常见原因有两个。

第一个原因是电脑崩溃导致的数据损坏,需要重建数据库索引。请在 数据库 > 数据库管理 窗口中执行重建索引(维护 > 重建索引)——完整步骤请参见数据库维护。完成维护后,重建缓存,以确保数据库按预期运行。

Reindex PT4 database

第二个原因是硬件故障。虽然我们不建议这样做,但你可以通过编辑 postgresql.conf 文件来设置 PostgreSQL 忽略这些错误。

你必须以管理员身份编辑 postgresql.conf 文件。右键单击 Notepad 图标并选择 以管理员身份运行 来启动它。点击 File > Open,然后选择 postgresql.conf 文件,通常位于 C:\Program Files\PostgreSQL\16\data\postgresql.conf

滚动到文件底部,新建一行,并添加文本 zero_damaged_pages = on

保存文件并退出 Notepad。要启用更改,请重启计算机,或点击 Start > Programs > PostgreSQL > Reload Configuration

注意

如果你的硬盘问题持续存在,请考虑将其更换为 7200 RPM(或更快)的硬盘,或者 SSD。

网络计算机上的 PostgreSQL

你可以将 PostgreSQL 部署在局域网中的另一台计算机上。安装说明请参见在本地网络上托管的 PostgreSQL 服务器

此方法不是官方支持的。由于 PokerTracker 4 并非为远程数据库访问而设计,某些功能——备份、还原、数据库优化和数据库维护——只有在数据库与 PokerTracker 4 位于同一台计算机上时才能正常工作。

安装在单独驱动器上的 PostgreSQL

要从不同的驱动器运行数据库,请先从电脑上完全删除 PostgreSQL(见下文),然后将其重新安装到你选择的驱动器上。更多详情,请参见论坛帖子在单独驱动器上创建数据库

安装在热插拔驱动器上的 PostgreSQL

本指南将数据库设置在可热插拔的硬盘上,这样你就可以在不同电脑之间移动它并使用同一个数据库。这避免了 PostgreSQL 的网络限制,并让你可以在本地网络之外使用数据库。

本指南假设 PokerTracker 4 已安装在两台 Windows 电脑上,并且各自使用独立数据库。目前我们不建议 macOS 用户采用此方案。

开始之前,请先备份你的数据库,并将备份保存在安全的位置。

准备热插拔驱动器

  1. 打开 开始 > 计算机(“我的电脑”窗口——你会经常回到这里)。
  2. 右键单击你的热插拔驱动器,选择 重命名,并将其命名为你的数据库名称(例如 pg_16)。
  3. 再次右键单击该驱动器并选择 格式化。将文件系统设置为 NTFS,分配单元大小设为 4096,选择 快速格式化,然后点击 开始
  4. 分配一个在两台电脑上都可用的盘符。打开 开始 > 右键单击 计算机 > 管理 > 磁盘管理。右键单击你的热插拔驱动器,选择 更改驱动器号和路径 > 更改...,选择 分配以下驱动器号,并选择 P(代表 PostgreSQL)。接受警告并继续。

卸载 PostgreSQL

  1. 打开 开始 > 控制面板 > 程序和功能。等待列表加载完成后,右键单击 PostgreSQL 并选择 卸载。记下版本号。
  2. 打开提升权限的命令提示符(右键单击 命令提示符 > 以管理员身份运行),并执行 net user /delete postgres。你应该会看到“命令已成功完成。”如果出现“拒绝访问”,说明你不是以管理员身份运行。完成后输入 exit
  3. 删除 C:\Program Files\PostgreSQL 中残留的文件夹。请先确认你的数据已备份并妥善保存。

下载并安装 PostgreSQL

下载你要安装的 Enterprise DB 版本 PostgreSQL——通常选择你当前所用主版本中的最新发行版。

运行安装程序,在提示选择安装位置时,浏览到你的 P: 盘中的 P:\PostgreSQL\16(将 16 替换为你的版本;点击新建文件夹图标创建该文件夹)。

继续完成安装程序。在密码界面中,在两个输入框都填入 dbpass。点击 下一步,直到安装完成。

`dbpass` password for PokerTracker 4

还原数据库

使用与备份时相同的方法还原你已备份的数据库

PostgreSQL 关闭与启动

现在到另一台电脑上,并将其同步到热插拔驱动器。

注意

必须在每次将驱动器在电脑之间移动时停止 PostgreSQL 服务,否则你可能会丢失数据库服务器。

在你的主电脑上:

  1. 关闭 PokerTracker 4。
  2. 打开 开始 > 右键单击 计算机 > 管理 > 服务
  3. 在列表中找到 PostgreSQL,右键单击它并选择 停止。现在可以安全地移除驱动器了。

在将驱动器连接到另一台电脑之前,确保那边的 PostgreSQL 服务没有运行。连接驱动器后,启动该服务:右键单击 PostgreSQL > 启动

第二台电脑

如果这台电脑上已经安装了 PostgreSQL,请先卸载它

  1. 插入驱动器,并像在第一台电脑上一样为其分配盘符 P:(参见准备热插拔驱动器)。
  2. 下载你之前使用的同一版本 PostgreSQL 并运行安装程序,再次将安装位置设置为 P:\PostgreSQL\16
  3. 让安装程序创建服务密码,但在密码页面上取消勾选初始化数据库。完成安装。
  4. 编辑 C:\Program Files\PokerTracker 4\Data\Config\PokerTracker.cfg,删除所有数据库信息并保存。
  5. 运行 PokerTracker 4。在 PostgreSQL 配置界面中,输入密码 dbpass 并点击 连接
  6. 当系统提示创建数据库时,勾选 此数据库已存在,点击 浏览,选择你的数据库,然后点击 连接

现在,你可以在两台电脑上使用同一个数据库了。

备注

记住,在移动驱动器之前要停止 PostgreSQL 服务,并在将其插入另一台电脑后再次启动它(开始 > 程序 > PostgreSQL > 启动服务)。