求助,postgresql服务启动不了!

mingsharp1 2010-08-18 04:30:15
现在服务启动不了,data目录下没有这个postmaster.pid文件,我复制一个初始的进去,服务能启动,任务管理器里面就跳出一个postgres.exe进程。但是过几十秒服务就自动停止。

windows日志里面有两个错误
1:无法创建锁定文件“postmaster.pid”:权限被拒绝。
2:2010年8月18日16时03分35秒致命的:不能删除旧的锁定文件“postmaster.pid”:没有这样的文件或目录
2010年8月18日16时03分35秒提示:该文件似乎无意中遗留下来的,但它不能被删除。请删除手工文件,然后再试一次。

如果删除postmaster.pid文件,服务就启动不了,报错:本地计算机上的postgresql database server8.2服务启动后停止。
某些服务在未由其他服务或程序使用时将自动停止。

数据库连接时报错:
Error connecting to the server:无法连接到服务器:Connection refused(0x0000274D/10061)
服务器是否在主机“127.0.0.1”上运行并且准备接受再端口5432上的TCP/IP联接?

现在实在是没有办法了,请大家帮帮忙!
...全文
17820 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
iihero 2012-12-03
  • 打赏
  • 举报
回复
致楼主,PostgreSQL版刚立不久,此问题应该已解决,希望能及时结帖,活跃版面,您的积极参与将是推动本版前进的重要力量。
iihero 2012-11-13
  • 打赏
  • 举报
回复
引用 11 楼 ynshi57 的回复:
问个题外话 vc与postgres实现连接的时候,可以使用postgres自有的函数,也可以用ODBC, 在可移植方面哪个更好一些呢? 另外如果用ODBC实现连接的话,是不是需要下载postgres的ODBC驱动,这方面不知版主有没有可以传授的 ……
可移植性,如果只用PG, 显然pg的c api可移植性更好,性能也会更好些。 如果使用odbc,是需要安装驱动的。网上都可以找得到。
全麦Logan 2012-11-13
  • 打赏
  • 举报
回复
引用 10 楼 iihero 的回复:
你的错误日志说明已经很清楚了: 2010-08-10 14:00:38 LOG: database system was shut down at 2010-08-07 21:08:48 中国标准时间 2010-08-10 14:00:38 LOG: record with zero length at 0/1A5D5AE8 2010-08-10 14:00:3……
问个题外话 vc与postgres实现连接的时候,可以使用postgres自有的函数,也可以用ODBC, 在可移植方面哪个更好一些呢? 另外如果用ODBC实现连接的话,是不是需要下载postgres的ODBC驱动,这方面不知版主有没有可以传授的
全麦Logan 2012-11-12
  • 打赏
  • 举报
回复
引用 4 楼 trainee 的回复:
这是很严重的问题 wal日志文件坏了(或状态文件)导致无法启动,和postmaster.pid没关系 补救方法是 pg_resetxlog 目录文件
这个回答真是太绝了,我遇到同样的问题,然后就ok了,能不能请大侠解释一下原因呢? pg_resetxlog这个是什么文件夹
iihero 2012-11-12
  • 打赏
  • 举报
回复
你的错误日志说明已经很清楚了: 2010-08-10 14:00:38 LOG: database system was shut down at 2010-08-07 21:08:48 中国标准时间 2010-08-10 14:00:38 LOG: record with zero length at 0/1A5D5AE8 2010-08-10 14:00:38 LOG: invalid primary checkpoint record 2010-08-10 14:00:38 LOG: record with zero length at 0/1A5D5A98 2010-08-10 14:00:38 LOG: invalid secondary checkpoint record 2010-08-10 14:00:38 PANIC: could not locate a valid checkpoint record 这说明WAL日志文件里边有不一致的记录,所以需要使用pg_resetxlog进行重置。
全麦Logan 2012-11-12
  • 打赏
  • 举报
回复
引用 8 楼 iihero 的回复:
命令用法很简单啊: d:\pgsql_latest>pg_resetxlog d:\pgsql_latest\data Transaction log reset 后边那个参数是PG的data目录全路径。 你弄完以后再启动即可。 pg_resetxlog 名称 pg_resetxlog -- 重置一个数据库集群的预写日志以及其它控制内容 语法 ……
那你帮分析一下是什么原因造成这个问题的呢,安装都没问题的。
iihero 2012-11-12
  • 打赏
  • 举报
回复
命令用法很简单啊: d:\pgsql_latest>pg_resetxlog d:\pgsql_latest\data Transaction log reset 后边那个参数是PG的data目录全路径。 你弄完以后再启动即可。 pg_resetxlog 名称 pg_resetxlog -- 重置一个数据库集群的预写日志以及其它控制内容 语法 pg_resetxlog [-f] [-n] [-ooid ] [-x xid ] [-e xid_epoch ] [-m mxid ] [-O mxoff ] [-l timelineid, fileid, seg ] datadir 描述 pg_resetxlog 清理预写日志(WAL)并且可以有选择地重置其它一些存储在 pg_control 文件中的控制信息。有时候,如果这些文件崩溃了,就需要这个功能。一定只把它用作最后的方法,就是说只有因为这样的崩溃导致服务器无法启动的时候才使用。 运行这个命令之后,可能就可以启动服务器了,但是,一定要记住数据库可能因为部分提交的事务而含有不完整的数据。你应该马上转储数据,运行 initdb ,然后重新加载。在重新加载之后,检查不完整的部分然后根据需要进行修复。 这个命令只能由安装服务器的用户运行,因为它需要对数据目录的读写权限。出于安全考虑,pg_resetxlog 不使用环境变量 PGDATA ,你必须在命令行上声明数据目录。
全麦Logan 2012-11-12
  • 打赏
  • 举报
回复
引用 6 楼 iihero 的回复:
引用 5 楼 ynshi57 的回复:引用 4 楼 trainee 的回复:这是很严重的问题 wal日志文件坏了(或状态文件)导致无法启动,和postmaster.pid没关系 补救方法是 pg_resetxlog 目录文件 这个回答真是太绝了,我遇到同样的问题,然后就ok了,能不能请大侠解释一下原因呢? pg_resetxlog这个是什么文件夹 是命令,……
不对啊,我在data文件夹下建了一个pg_resetxlog文件夹,问题就解决了, 你说pg_resetxlog是个命令?是什么命令,这个命令完整应该怎么写?
iihero 2012-11-12
  • 打赏
  • 举报
回复
引用 5 楼 ynshi57 的回复:
引用 4 楼 trainee 的回复:这是很严重的问题 wal日志文件坏了(或状态文件)导致无法启动,和postmaster.pid没关系 补救方法是 pg_resetxlog 目录文件 这个回答真是太绝了,我遇到同样的问题,然后就ok了,能不能请大侠解释一下原因呢? pg_resetxlog这个是什么文件夹
是命令,不是文件夹。 主要作用是重置控制文件以及WAL日志文件相关信息。
trainee 2010-08-18
  • 打赏
  • 举报
回复
这是很严重的问题
wal日志文件坏了(或状态文件)导致无法启动,和postmaster.pid没关系
补救方法是
pg_resetxlog 目录文件

mingsharp1 2010-08-18
  • 打赏
  • 举报
回复
数据库最后日志:
2010-08-10 14:00:38 LOG: database system was shut down at 2010-08-07 21:08:48 中国标准时间
2010-08-10 14:00:38 LOG: record with zero length at 0/1A5D5AE8
2010-08-10 14:00:38 LOG: invalid primary checkpoint record
2010-08-10 14:00:38 LOG: record with zero length at 0/1A5D5A98
2010-08-10 14:00:38 LOG: invalid secondary checkpoint record
2010-08-10 14:00:38 PANIC: could not locate a valid checkpoint record

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
2010-08-10 14:00:38 LOG: startup process (PID 1516) exited with exit code 3
2010-08-10 14:00:38 LOG: aborting startup due to startup process failure
2010-08-10 14:00:39 LOG: logger shutting down
trainee 2010-08-18
  • 打赏
  • 举报
回复
请看postgresql本身的日志,如果你有在postgresql.conf中设置日志输出的话。
trainee 2010-08-18
  • 打赏
  • 举报
回复
postmaster.pid是postgresql服务自动产生的,记录服务进程号的,不要人为去改动它。
服务停止时,会自动删除。如果有遗留下,那就手工删除掉

在启动前,这个文件是不应该存在的,如果这个文件不存在,服务还是无法启动,那就不是postmaster.pid的问题。
是否还有其他错误信息?




972

社区成员

发帖
与我相关
我的任务
社区描述
PostgreSQL相关内容讨论
sql数据库数据库架构 技术论坛(原bbs)
社区管理员
  • PostgreSQL社区
  • yang_z_1
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧