GoTop
GoTop

Reputation: 901

django-pyodbc DatabaseError message is wired

I use django-pyodbc on Django 1.6.1

when I run manage.py syncdb, everything is fine.

I use 2 database setttings in Django to read some data from my legacy database, when I what to read the data from a model name T_AllStation:

all_t_station = T_AllStation.objects.using('SQL_Server').all()

An error is raised:

DatabaseError at /company/get_station_info

('42S22', "[42S22] [Microsoft][ODBC SQL Server Driver][SQL Server]\xc1\xd0\xc3\xfb 'id' \xce\xde\xd0\xa7\xa1\xa3 (207) (SQLExecDirectW)")

Request Method:     GET
Request URL:    http://127.0.0.1:8000/company/get_station_info
Django Version:     1.6.1
Exception Type:     DatabaseError
Exception Value:    

('42S22', "[42S22] [Microsoft][ODBC SQL Server Driver][SQL Server]\xc1\xd0\xc3\xfb 'id' \xce\xde\xd0\xa7\xa1\xa3 (207) (SQLExecDirectW)")

Exception Location:     E:\VirtualEnvs\EnvMonitor\lib\site-packages\django_pyodbc\base.py in execute, line 416
Python Executable:  E:\VirtualEnvs\EnvMonitor\Scripts\python.exe
Python Version:     2.7.2

What does the string \xc1\xd0\xc3\xfb 'id' \xce\xde\xd0\xa7\xa1\xa3 (207) mean ?

Upvotes: 0

Views: 384

Answers (1)

FlipperPA
FlipperPA

Reputation: 14311

Try making your configuration file use options like this, to account for Unicode:

DATABASES = {
    'default': {
        'ENGINE': 'django_pyodbc',
        'NAME': 'db_name',
        'USER': 'db_user',
        'PASSWORD': 'your_password',            
        'HOST': 'database.domain.com,1433',
        'PORT': '1433',
        'OPTIONS': {
            'host_is_server': True,
            'autocommit': True,
            'unicode_results': True,
            'extra_params': 'tds_version=8.0'
        },
    }
}

(You're on Windows, so you don't need the tds_version, but it can't hurt so your config is portable to Linux.)

Upvotes: 1

Related Questions