Django <-> SQL Server 2005, текст, кодирующий проблему

Я пытаюсь хранить данные Django на использовании SQL Server MS 2005 года:

http://code.google.com/p/django-pyodbc/ (pyodbc + FreeTDS)

Пока я храню строку, состоят из символов ASCII, все в порядке. Когда я использую unicode (напр. '\xc5\x82'), django бросает ProgrammingError на:

ProgrammingError at /admin/cli/punktrejestracji/add/
('42000', '[42000] [FreeTDS][SQL Server]The incoming tabular data stream (TDS) protocol stream is incorrect. The stream ended unexpectedly. (4002) (SQLExecDirectW)')

последний элемент трассировки:

params  ('\xc5\x82',)
self    
sql 'SELECT (1) AS [a] FROM [cli_punktrejestracji] WHERE [cli_punktrejestracji].[adres] = ? '

BTW, который не делает http://code.google.com/p/django-mssql/, кажется, работает в соответствии с Linux, django-mssql нужна pythoncom библиотека.Я прав?

5
задан RBarryYoung 4 February 2010 в 14:23
поделиться

2 ответа

Хорошо, решение найдено. В файле freetds.conf есть

client charset = UTF-8

, и он работает точно так же, как должен.

1
ответ дан 15 December 2019 в 06:26
поделиться

Мы используем Django с SQL Server 2005. Мы обнаружили ту же проблему, что и вы.

Какой драйвер ODBC вы используете? FreeTDS?

Мы попытались найти хороший драйвер ODBC для linux / unix, который бы не выдавал вышеуказанную (и другие) ошибку, когда в игру вступает юникод, - и потерпели неудачу с треском. Ни один из протестированных нами драйверов - по крайней мере, три, я могу выкопать их имена, если хотите - не имел успеха в работе со строками Unicode через django-pyodbc.

В конце концов, как это ни грустно звучит, мы решили запустить Django на сервере Windows (Apache + mod_wsgi) и использовать драйвер Microsoft SQL Native ODBC.

Когда мы это делаем, он работает отлично - с точки зрения Юникода.

2
ответ дан 15 December 2019 в 06:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: