FreeTDS версия 0.82
unixODBC версия 2.3.0
pyodbc версия 2.1.8
freetds.conf:
tds version = 7.0
client charset = UTF-8
с использованием имени сервера вodbc.ini (который по какой-то сумасшедшей причине привел к тому, что unixODBC распознал клиентскую кодировку в freetds)
Я могу правильно извлекать данные utf8 и обновлять их со строкой, т. е.
UPDATE table
SET col = N'私はトカイ大好き'
WHERE id = 182333369
Но
text = u'私はトカイ大好き'
cursor.execute("""
UPDATE table
SET column = ?
WHERE id = 182333369
""", text)
Сбой:
pyodbc.Error: ('HY004', '[HY004] [FreeTDS][SQL Server]
Invalid data type (0) (SQLBindParameter)')
Если я добавлю:
text = text.encode('utf-8')
, я получаю следующую ошибку:
pyodbc.ProgrammingError: ('42000', '[42000] [FreeTDS] [SQL Server] Неверный поток протокола входящего потока табличных данных (TDS). Поток неожиданно завершился. (4002) (SQLExecDirectW)')
Есть какие-нибудь идеи относительно того, куда все сбилось?