2013-10-30 67 views
0

我有一個使用DavArt dotConnector連接到PostgreSQL數據庫的C#項目。 在數據庫中,我可以添加角色以在連接字符串中使用它。在連接字符串中使用非拉丁字符PostgreSQL的用戶ID

CREATE ROLE "Z111222333";
ALTER ROLE "Z111222333" WITH NOCREATEROLE LOGIN PASSWORD 'md5c6fd41ba62fc5ce98135f0707de385ba';

拉丁字符的名字都是正確的。用戶可以連接。
我嘗試使用非拉丁字符(例如西裏爾字母)創建角色。

CREATE ROLE "ZФРОЛОВМ";
ALTER ROLE "ZФРОЛОВМ" WITH NOCREATEROLE LOGIN PASSWORD 'md5b4b194033aab1f2d6dbd275736f1b029';

在這種情況下,用戶無法連接。例外:「錯誤:28P01:用戶」ZФРОЛОВМ「的密碼驗證失敗。」

連接器:Devart dotConnector for PostgreSQL 6.5
數據庫:PostgreSQL 9.1
連接字符串:"User Id=ZФРОЛОВМ;Password=A1E0476879CAB2A76CC22C80BBF364; Host=localhost;Database=testDB;Unicode=True;Persist Security Info=True;Schema=mir"

如何使用非拉丁字符的用戶ID?

+1

確定密碼正確嗎? – JMK

+0

對不起。我確信在我的數據庫中密碼是正確的。但在這個例子中,我犯了一個錯誤:'ALTER ROLE「ZФРОЛОВМ」WITH NOCREATEROLE LOGIN PASSWORD'md517aa59c10d0061a2d179831df43902f6';' – Roren

回答

0

在PostgreSQL中最好避免在用戶名(和數據庫名)中使用非ASCII字符。在初始連接設置和身份驗證期間,字符編碼轉換處於非活動狀態,並且連接的成功與否取決於您是否恰好以正確的編碼發送正確的字節。我不知道你的情況是否是這個問題,但它不會讓我感到意外,如果還有其他類似問題,我不會感到驚訝。

+0

謝謝。我將用它作爲最佳做法。 – Roren