Django и SQL Server - ошибка, когда charfield> 10 символов - PullRequest
0 голосов
/ 02 декабря 2010

Я использую Django 1.2.3 и django-pyodbc.

Я получаю ошибку при добавлении пользователя с длиной> 10 символов :

Типы данных nvarchar и ntext несовместимы в операторе равенства


Всякий раз, когда я добавляю пользователя с именем пользователя из 10 символов или ниже, он работает нормально, такая же ошибка для электронных писем.

Есть идеи, ребята?


Таблица пользователей:

CREATE TABLE [auth_user] (
    [id] int IDENTITY (1, 1) NOT NULL PRIMARY KEY,
    [username] nvarchar(30) NOT NULL UNIQUE,
    [first_name] nvarchar(30) NOT NULL,
    [last_name] nvarchar(30) NOT NULL,
    [email] nvarchar(75) NOT NULL,
    [password] nvarchar(128) NOT NULL,
    [is_staff] bit NOT NULL,
    [is_active] bit NOT NULL,
    [is_superuser] bit NOT NULL,
    [last_login] datetime NOT NULL,
    [date_joined] datetime NOT NULL
)

Ответы [ 3 ]

1 голос
/ 20 января 2011

У меня была похожая проблема с SQL Server 2008 и драйвером odbc собственного клиента SQL. Обновление до SQL Server 2008 R2 устранило проблему. Кажется, это вызвано проблемой с результатами вызова odbc SQLGetTypeInfo () для типа WVARCHAR, включая некоторые типы даты / времени.

1 голос
/ 02 декабря 2010

Попробуйте python manage.py sqlall <appname>, чтобы увидеть, каково определение CREATE TABLE для вашей таблицы.

0 голосов
/ 17 апреля 2013

В Linux я исправил это, установив версию TDS на 7.2:

    'OPTIONS': {
        'driver': '/usr/lib/libtdsodbc.so',
        'host_is_server': True,
        'extra_params': 'TDS_Version=7.2',
    }

См. Следующую ссылку на таблицу версий TDS: Выбор версии протокола TDS

...