在启动postgres服务的时候,一直报错超时,查看log下的日志并未发现有用的信息:

#在你的数据库bin目录下执行pg_resetwal.exe -f 你的数据data目录

pg_resetwal.exe -f ..\data


pg_ctl -D ..\data start

如果报错:锁文件"postmaster.pid" 已经存在,去到data路径下删除postmaster.pid文件,再次启动。

我这样依然没能解决问题,因为我没有报错【锁文件"postmaster.pid" 已经存在】,请继续往下看:

排查一下是不是该服务的端口被占用,PostgreSQL服务的默认端口是5432,我们在命令行中执行如下命令:

netstat -ano | find /i "5432"

如果有某个进程使用了5432这个端口,说明端口占用导致服务无法启动:

 进程的pid是2364,可以用下列命令查看它是什么进程:

tasklist | findstr "2364"

 

 可以通过下列命令结束进程:

taskkill /f /pid 2364

执行这一系列操作后,发现log开始有报错信息啦:

无法处理事物 12207234 的状态 无法打开文件 "pg_xact/0098": 没有那个文件或目录

启动进程 (PID 32291) 已退出, 退出代码 1 由于启动进程失败, 终止启动 数据库系统已关闭

我是备份了pg_xact目录,然后删除pg_xact日志,再启动数据库,依然不行,因为我是windows系统,所以简单的方式是,复制了一个pg_xact文件夹里的一个文件,改名为我缺少的那个0098,再次重启数据库服务,启动成功

 

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐