2017-07-20 14 views
0

私はcentos7に新しいpostgresqlサーバをインストールしました。別のcentos7サーバから接続しました。私はこのモジュールをチェックするためにpsycopg2 tests.unittest.mainを実行しました。すべては除き、罰金です:まずpsycopg2は言語のためにtest_module AssertionErrorをテストしますか?

[[email protected] dbatools]$ python3 -c "from psycopg2 import tests; tests.unittest.main(defaultTest='tests.test_suite')" 
[...] 
====================================================================== 
FAIL: test_diagnostics_values (psycopg2.tests.test_module.ExceptionsTestCase) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "/usr/lib64/python3.4/site-packages/psycopg2/tests/test_module.py", line 189, in test_diagnostics_values 
    self.assertEqual(e.diag.severity, 'ERROR') 
AssertionError: 'ERREUR' != 'ERROR' 
- ERREUR 
? ^^ 
+ ERROR 
? ^


---------------------------------------------------------------------- 
Ran 641 tests in 27.328s 

FAILED (failures=1, skipped=62) 

、両方のサーバーは、LANG = fr_FR.UTF-8(Erreur =フランス語でエラー)がありました。

localectl set-locale LANG=en_US.utf8 

は、今私が持っている:

例外がここに上げている
[[email protected] dbatools]$ localectl 
    System Locale: LANG=en_US.utf8 
     VC Keymap: fr 
     X11 Layout: fr 
[[email protected] dbatools]$ locale 
LANG=en_US.utf8 
LC_CTYPE="en_US.utf8" 
LC_NUMERIC="en_US.utf8" 
LC_TIME="en_US.utf8" 
LC_COLLATE="en_US.utf8" 
LC_MONETARY="en_US.utf8" 
LC_MESSAGES="en_US.utf8" 
LC_PAPER="en_US.utf8" 
LC_NAME="en_US.utf8" 
LC_ADDRESS="en_US.utf8" 
LC_TELEPHONE="en_US.utf8" 
LC_MEASUREMENT="en_US.utf8" 
LC_IDENTIFICATION="en_US.utf8" 
LC_ALL=en_US.utf8 

(psycopg2 /テスト/ test_module.py):

def test_diagnostics_values(self): 
    cur = self.conn.cursor() 
    try: 
     cur.execute("select * from nonexist") 
    except psycopg2.Error as exc: 
     e = exc 

    self.assertEqual(e.diag.sqlstate, '42P01') 
    self.assertEqual(e.diag.severity, 'ERROR') 
は、だから私はEN_US.UTF-8にそれを変更しました

私はgithubのソースを見てpsycopg2.Errorの定義を見つけましたが、本当に見つかりませんでした。 python3シェルで

>>> import locale 
>>> locale.getlocale() 
('en_US', 'UTF-8') 
>>> locale.getdefaultlocale() 
('en_US', 'UTF-8') 
>>> from psycopg2 import tests, __version__ as psycopg2_version 
>>> print(psycopg2_version) 
2.7.1 (dt dec pq3 ext lo64) 
>>> tests.unittest.main(defaultTest='tests.test_suite') 
#Same error 

は、誰かがpsycopg2のテストを実行して、エラーのこの王に遭遇していますか?私はすべてをen_USに変更した後、なぜフランス語を返しますか?

答えて

0

実際、実際には言語関連のエラーでしたが、postgresqlサーバーの設定ではありました。 http://initd.org/psycopg/docs/module.html#exceptionsから

例外psycopg2.Error

DIAG

A Diagnostics object containing further information about the error. 

そしてhttp://initd.org/psycopg/docs/extensions.html#psycopg2.extensions.Diagnosticsから:

すべての情報A PQresultErrorField()関数からの利用可能性は、オブジェクトによって属性として公開される。重大度属性は...だからその後

[[email protected] data]# grep fr_FR /data/postgresql.conf 
lc_messages = 'fr_FR.UTF-8'      # locale for system error message 
lc_monetary = 'fr_FR.UTF-8'      # locale for monetary formatting 
lc_numeric = 'fr_FR.UTF-8'      # locale for number formatting 
lc_time = 'fr_FR.UTF-8'       # locale for time formatting 
[[email protected] data]# vim /data/postgresql.conf 
[[email protected] data]# grep lc_messages /data/postgresql.conf 
lc_messages = 'en_US.UTF-8'      # locale for system error message 
[[email protected] data]# systemctl restart postgresql-9.6.service 

をPG_DIAG_SEVERITYコード

を返します。

[[email protected] dbatools]$ python3 -c "from psycopg2 import tests; tests.unittest.main(defaultTest='tests.test_suite')" 
---------------------------------------------------------------------- 
Ran 641 tests in 24.979s 

OK (skipped=62) 
関連する問題