提交问题指南
请通读本文档。它提供的信息将帮助您以更清晰的方式提出问题或描述您的问题,以便获得更有用的解答。如果您遗漏了任何建议的信息,您可能需要与他人反复沟通,以便他们收集足够的信息来帮助您,或者他们可能会在没有实际数据的情况下进行猜测,这会导致答案偏离目标。请不要让人们问两次才能弄清楚您正在运行哪个版本的 postgres。
为什么您会收到此链接?
我们的开发社区由志愿者管理。没有人被付费来回答您在我们的邮件列表中的问题。
我们的时间有限,希望尽可能多地花在有效地帮助您上。
花几分钟时间阅读本文档将有助于我们尽快帮助您。所以,请深入了解!
如何更快地获得帮助
在撰写求助请求时,请站在读者的角度思考,并从他们的角度阅读您的邮件。他们会有什么问题要问?请记住,他们看不到您的屏幕。他们不知道您想做什么。他们无法分辨您使用什么程序或操作系统。阅读您问题的人只知道您告诉他们的事情。您提供的信息越详细,他们就能提供越好的帮助。
请记住,pgsql-general 邮件列表中的人员是在业余时间提供帮助的。请表示您尊重他们花时间帮助您的做法。如果有人问了您有关环境的 6 个问题,而您只回答了其中一些问题,这会让他们不愿意再提供更多帮助。
特定类型的問題
查询速度慢?阅读:发布慢速查询问题的指南.
安装问题?阅读:安装故障排除 以及(在 Windows 上)Windows 安装常见问题解答.
针对(罕见但恶劣的)疑似数据/索引损坏问题: 如果您怀疑数据库或索引已损坏,该怎么办
在问题报告中需要提到的内容
针对任何问题
要获得快速且有用的回复,您必须至少包含下面列表中显示的信息。请不要包含任何类型的屏幕截图。
我们对格式进行了调整,以便您可以将下面的列表剪切并粘贴到电子邮件中,并填写信息
A description of what you are trying to achieve and what results you expect.: PostgreSQL version number you are running: How you installed PostgreSQL: Changes made to the settings in the postgresql.conf file: see Server Configuration for a quick way to list them all. Operating system and version: What program you're using to connect to PostgreSQL: Is there anything relevant or unusual in the PostgreSQL server logs?: For questions about any kind of error: What you were doing when the error happened / how to cause the error: The EXACT TEXT of the error message you're getting, if there is one: (Copy and paste the message to the email, do not send a screenshot)
这是一个更详细的版本,向您展示了在需要帮助查找信息时可以去哪里
- 对您试图实现的目标和预期结果的描述.
- 尽可能详细地描述,包括步骤,包括命令行、SQL 输出等。
- 您正在运行的确切 PostgreSQL 版本
- 在
psql
或 PgAdmin 中运行“SELECT version();
”,并提供完整的、确切的输出。将其粘贴
- 在
- 您安装 PostgreSQL 的方式
- 是否下载了 EnterpriseDB 一键式安装程序?
- 来自 Linux 发行版软件包管理?如果是,哪个仓库?
- rpm/deb 包的直接下载?从哪里下载?
- 来自 BSD ports、MacPorts 等?
- 下载并编译了源代码。如果是,您向
configure
传递了哪些选项?您使用了什么编译器和版本? - 如果您遇到安装程序问题,请确保包含来自临时文件夹的安装程序日志。Windows 用户请查看 在本地 Windows 上运行和安装 PostgreSQL.
- 对 postgresql.conf 文件中的设置所做的更改:查看 服务器配置 以快速列出所有设置。
- 操作系统和版本
- Linux 用户
- Linux 发行版和版本
- 内核详细信息(在终端上运行
uname -a
)
- Windows 用户
- 这意味着您的 Windows 操作系统版本、变体和 Service Pack。例如,“Windows XP Pro Service Pack 3”。您可以在“winver”命令中获取此信息 - “开始 -> 运行 -> winver.exe”。
- 您是否正在运行 32 位或 64 位版本的 Windows
- Linux 用户
- 针对任何类型的错误问题
- 您在发生错误时正在做什么/如何引发错误。
- 您遇到的错误消息的确切文本(如果有)。将消息复制并粘贴到电子邮件中,不要发送屏幕截图。
- 您使用什么程序连接到 PostgreSQL
- 您使用的是哪个版本的 ODBC/JDBC/ADO/等驱动程序(如果有)
- 如果您使用连接池、负载均衡器或应用程序服务器,请说明您使用的是哪一个以及它的版本
- PostgreSQL 服务器日志中是否有任何远程异常?
- 在 Linux 上,这在一定程度上取决于发行版,但您通常可以在
/var/log/postgresql/
中找到它们。 - 在 Windows 上,这些日志位于您的数据目录中。在默认的 PostgreSQL 安装中,它位于
C:\Program Files\PostgreSQL\8.4\data\pg_log
(假设您使用的是 8.4) - Windows 用户还应检查事件查看器以查看服务启动消息。
- 在 Linux 上,这在一定程度上取决于发行版,但您通常可以在
如果您遗漏了任何内容,您的问题可能无法得到解答,或者您将收到指向此页面的另一个链接,并被告知重新尝试。节省您的时间:第一次就做对。
针对查询错误或问题
- 您运行的查询的确切文本(如果有)
- 该查询的确切输出(如果它足够短,可以合理地发布),否则发布它的示例
- 您的查询使用的任何表格、视图和用户定义函数的 SQL 定义,或它们的 psql
\d+
输出。 - 如果可能,请提供一个自包含的测试用例来演示您的问题
- 如果您认为查询结果错误,请说明您认为应该产生的结果以及原因
- 针对慢速查询问题,请参阅 发布慢速查询问题的指南 页面中的信息。
如果您的问题与性能(查询速度、内存使用等)和/或数据损坏有关
请提供有关以下方面的信息
- CPU 制造商和型号,例如“AMD Athlon X2”或“Intel Core 2 Duo”
- 来自 SELECT * FROM pg_config(); 的编译标志
- 安装的 RAM 容量和大小,例如“2GB RAM”
- 存储详细信息(对于性能和损坏问题非常重要)
- 您是否使用 RAID 控制器?如果是,哪种类型的控制器?例如“3Ware Escalade 8500-8”
- 它是否有电池供电的缓存模块?
- 回写缓存是否已启用?
- 您是否使用软件 RAID?如果是,使用的是什么软件以及哪个版本?例如“Linux 软件 RAID (md) 2.6.18-5-686 SMP mod_unload 686 REGPARM gcc-4.1”。
- 对于 Linux 软件 RAID,您可以从“modinfo md_mod”命令中获取详细信息
- 您的 PostgreSQL 数据库是否位于 SAN 上?
- 是谁制造的,哪种类型等等?提供您能提供的任何详细信息。
- 系统连接了多少个硬盘,它们是什么类型?您需要说清楚,不能只说“6 个硬盘”。至少要说明制造商、旋转速度和接口类型,例如“6 个 15,000rpm Seagate SAS 硬盘”。
- 您的硬盘如何排列用于存储?您是否使用 RAID?如果是,使用哪个 RAID 等级?哪些 PostgreSQL 数据存储在哪些硬盘/硬盘集上?使用了哪些文件系统?
- 例如:“两个硬盘在 RAID 1 中,所有 PostgreSQL 数据和程序都存储在一个 ext3 文件系统上。”
- 例如:“4 个硬盘在 RAID 5 中,pg 数据目录存储在一个 ext3 文件系统上。2 个硬盘在 RAID 1 中,存储 pg_clog、pg_xlog、临时表空间和排序暂存空间,同样存储在 ext3 上。”
- 例如:“PostgreSQL 的默认 Windows 安装”
- 针对数据损坏报告
- 您是否曾经在 postgresql 配置文件中设置了
fsync=off
? - 您最近是否遇到过意外断电?更换了故障的 RAID 硬盘?操作系统崩溃过吗?
- 您是否运行过文件系统检查?(
chkdsk
/fsck
) - 系统日志中是否有任何错误消息?(unix/linux:
dmesg
、/var/log/syslog
;Windows:控制面板中的事件查看器 -> 管理工具)
- 您是否曾经在 postgresql 配置文件中设置了
- 您是否使用 RAID 控制器?如果是,哪种类型的控制器?例如“3Ware Escalade 8500-8”
不要做的事情
在邮件列表上回答您问题的人没有得到报酬。他们出于社区精神和帮助其他 PostgreSQL 用户的愿望而这样做,以便他们在需要时也能得到帮助。因此,他们必须愿意帮助您;如果您让自己变得令人讨厌,您将不会获得任何帮助。以下是一些可能会让人们更可能忽略您的请求而不是回答您的请求的不良做法
- “紧急情况!”:社区支持是点对点的,免费的,并且在帮助者方便的时候进行。如果真是紧急情况,请与商业支持公司签订支持合同。大多数公司都会提供单次事件支持,无需现有合同。
- 交叉发布:不要在 2 个或更多邮件列表中同时发布相同的问题。这不仅会惹恼您想要帮助的人,而且很可能导致您的电子邮件被垃圾邮件过滤器过滤掉。如果您将其发布到一个列表,并且在 2 天或更长时间内没有得到回复,那么您可以将其发布到另一个列表。
- 黑客列表上的用户问题:pgsql-hackers、pgsql-committers、pgsql-testers、pgsql-www 和 pgsql-rrreviewers 都是针对那些从事 PostgreSQL 数据库引擎和我们的社区基础设施的人员。在任何这些列表上询问用户问题,更有可能让你被喷,而不是得到任何答案。有超过 30 个用户邮件列表,请使用它们。许多代码贡献者和提交者确实阅读了 -general、-bugs 等列表,所以如果有什么问题,您会得到回复。
- 坚持在错误的列表上提问:有时您会在一个邮件列表上发布问题,然后被告知您需要将其发布到另一个列表。不要坚持在最初的列表上继续讨论,这会让每个人都感到厌烦。
- 直接向列表成员发送电子邮件,不抄送列表:当有人在列表上回复以尝试提供帮助时,您对该回复的任何回复通常应该保留在列表中。这样做的原因有很多,包括讨论可能对后来遇到相同问题的人有用,以及社区中可能还有其他成员可以提供帮助。
- 重新发布:不要在同一个列表中多次重新发布您的问题。如果人们没有回答,那是因为他们很忙,不知道答案,或者不想帮助您。如果一周过去了仍然没有得到回复,您可以“回复”您自己的帖子,并写上“有人可以帮忙吗?”,但更可能的是,您应该询问哪个其他列表可能更适合这个问题。如果您重新发布,有时讨论会在您不同帖子下的不同主题中分割,这会让每个人都感到困惑,并使帮助您变得更加困难。
- 与其他 DBMS 的比较 通常没有帮助,除非您的请求非常技术性,并且是经过认真比较测试的结果。我们通常不感兴趣完全复制 Oracle 或 MySQL 的工作方式;如果我们想这样做,我们会去开发那些数据库。此外,-general 列表的许多读者可能不熟悉您正在谈论的数据库系统,因此说“它就像
” 并没有太大帮助。解释您想做什么,而不是您在其他数据库中是如何做的。(也就是说,如果您注意到 Pg 支持某些东西,但语法与另一个主要数据库不太一样,那么值得一提,因为有时可以轻松添加另一种语法以实现兼容性)。 - “Postgres 坏了!” 以及诸如“如果你不帮我,我就要放弃 Postgres”之类的话,通常不会得到帮助,当然也不会更快地得到帮助。您通常会得到的反应是:“没有人强迫您使用 PostgreSQL,您可以随意使用 MySQL/Oracle/CouchDB”。类似地,通过指责 PostgreSQL 存在 bug,因为它不按您的预期工作来开始您的讨论也不是一个好方法。
- 坚持认为某人的答案是错误的(没有测试):如果您认为您比他们更了解,为什么还要寻求帮助?通常,您实际上想表达的意思是,感谢您的建议,但您似乎误解了我的问题。也许是我解释得不好,让我再试一次。或者,也许是,这并没有完全实现我想做的事情,因为它没有 blah - 有没有可能实现这一点?。考虑一下您是如何表达的。