2017-05-20 71 views
0

我已經打破了我的頭,問題在哪裏。用Python連接到Windows上的Firebird

import fdb 
con = fdb.connect(host='localhost', 
         database='//soulu.fdb', 
         user='sysdba', 
         password='masterkey', 
         charset='WIN1251' 
        ) 

我得到了這個結果。 已經嘗試過所有變種:使用charset utf8,win1251:使用dsn,使用單獨的主機和數據庫參數。在ubuntu下爲Windows運行腳本。沒什麼幫助。

Traceback (most recent call last): 
    File "C:\Users\ko-ov\Documents\Albatros\db for upload\loader.py", line 8, in <module> 
    charset='WIN1251' 
    File "C:\Users\ko-ov\AppData\Local\Programs\Python\Python36-32\lib\site-packages\fdb\fbcore.py", line 734, in connect 
    "Error while connecting to database:") 
    File "C:\Users\ko-ov\AppData\Local\Programs\Python\Python36-32\lib\site-packages\fdb\fbcore.py", line 560, in exception_from_status 
    msglist.append('- ' + (msg.value).decode('utf_8')) 
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd3 in position 0: invalid continuation byte 
+1

哪個版本的Firebird和哪個版本的FDB? –

+1

@MarkRotteveel謝謝!已經發現問題的根源:)真的,2.0.5版本非常古老,它已經安裝在我的筆記本電腦上(只有一個罕見的舊程序默認使用這個版本,並將其安裝在系統中)。我更新到2.5.x,一切正常。 – konstov

回答

1

我發現問題了(並且@MarkRotteveel通過他的評論確認了它)。 我的解決方案是從舊版2.0.5更新到版本2.5.x的

在官方頁面http://www.firebirdsql.org/en/devel-python-driver/作者寫道,支持版本2.0和更高版本,理論上所有應該適用於2.0.5沒有任何問題,但在這種情況下不會。

可能是Win10,python 3.6和firebird 2.0.5的組合問題。

+0

我的猜測是Firebird 3支持的某些更改對Firebird 2.5可以正常工作,但在某些情況下不適用於早期版本(例如,在連接握手中使用UTF-8作爲2.5中的可選項引入,並且現在 - iirc - Firebird 3需要) –

+1

@konstov - 在跟蹤器中註冊你的問題,所以它會以某種方式得到修復 - http://tracker.firebirdsql.org/secure/IssueNavigator.jspa?reset=true&mode =隱藏&分揀機/順序= DESC&分揀機/字段=優先權&分辨率= -1&PID = 10010&fixfor = -1 –