2017-02-02 61 views
0

这是一个后续问题是:如何在django数据库连接中打开PostgreSQL VERBOSITY?

Postgres: More verbose error message: I am missing the table name

的PostgreSQL 9.6 9.6版本改进的错误消息。

With psql您可以启用它\set VERBOSITY verbose

如何为django ORM中的每个连接启用此功能?

背景:我想要更好的错误消息。

例子:我在邮件中缺少表名这样

IntegrityError: null value in column "date" violates not-null constraint 
DETAIL: Failing row contains (10005, null, f, TEST, MAIL). 

我觉得9.6 release notes的相关部分是这样的:

在libpq里添加再生一个错误消息支持一个不同的详细程度(Alex Shulgin)

这是用新函数PQresultVerboseErrorMessage()完成的。这支持psql的新\ errverbose功能,也可能对其他客户端有用。

我使用psycopg2作为数据库适配器。

+0

你使用Django和PostgreSQL之间psycopg2工作。因此,这些特征应该首先被psycopg2包含。正如我从文档中看到的 - psycopg2在主代码库和附加代码中都没有提供。 :( –

+0

为服务器端功能,你可以随时启动事务执行正确'SET client_min_messages DEBUG5;' –

+0

@IlyaDyoshin我想“\设置VERBOSITY verbose”和“client_min_messages DEBUG5;”是不同的,或我错了吗? – guettli

回答

2

试试这个

# settings.py 
DATABASES = { 
    'default': { 
     'ENGINE': '...', 
     'OPTIONS': { 
      'init_command': "SET log_error_verbosity TO 'verbose'", 
     }, 
    } 
} 

测试查询

SELECT setting FROM pg_settings WHERE name = 'log_error_verbosity'