2012-04-24 104 views
1

例如,我在数据库中有NOT NULL字段。我试图插入NULL VALUE到它。 PostgreSQL说: ERROR: null value in column "id" violates not-null constraint获取有关自动解析PostgreSql错误的详细信息

(或类似的东西,在我的版本中它用俄语说话,所以我在谷歌找到英文错误信息)。

如何获取有关错误的其他信息?所有表格和模式中都有。我必须解析这个错误,并将发生错误的表,模式和字段返回给我的系统的一个更高的模块。这个信息很容易在Oracle和SQL Server中找到,但是如何在postgre中找到它们?

与独特的违规错误和其他问题相同的麻烦。

注意:此插入或更新可能是大批量命令的一部分,所以没有来自数据库的信息我无法找到发生错误的查询。

+0

您正在使用哪个前端程序? (在psql中,你可以使用\ d来获取表格定义)BTW:你给的错误测量对我来说似乎相当明显。顺便说一句:在大多数情况下,英文错误消息(对于任何*程序)都是google的好搜索条件,这似乎是喜欢英文版本的一个很好的理由。 – wildplasser 2012-04-24 12:53:21

+0

关于英语我知道,谢谢。关于“相当明显”。任务是:当发生错误时自动向高级模块说出“shema XX表YY字段ZZ中的错误”。我无法在Postgre错误修正中找到此信息。 由于客户端我使用npgsql驱动程序。 – Yavanosta 2012-04-24 13:03:49

+0

如果您正在使用某种接口嵌入式SQL:您可能需要查看(标准化)http://www.postgresql.org/docs/9.1/interactive/errcodes-appendix.html错误代码,SQLCA可能会提供其他上下文信息:http://www.postgresql.org/docs/9.1/static/ecpg-errors.html#ECPG-SQLCA。我不知道npgsql驱动程序,但所有驱动程序都依赖于esql管理器中的定义。 (他们可能会或可能不会*使用*所有的信息,但这是另一回事;-) – wildplasser 2012-04-24 14:10:32

回答

1

您必须使用正则表达式和解析错误消息。现在没有其他可能。这是在我的ToDo中,但它需要一个空闲时间。

+0

是的,我使用RegExp解析错误。但唯一违规错误和NOT NULL违规错误错误消息不包含此信息。 只有'错误:列'id'中的空值违反非空约束' 女巫表“id”没有信息位于。 – Yavanosta 2012-04-27 13:02:19

相关问题