django-pyodbc-azure DatabaseError:('42000','[42000]将数据类型nvarchar转换为int时出错

时间:2013-11-29 10:08:54

标签: python django azure pyodbc django-pyodbc-azure

我是后端的初学者。试图在我的Windows机器上测试Web服务。

在Linux服务器上,我有一台具有以下数据库设置的工作机器:

DATABASES = {
'default': {
    'ENGINE': 'django_pyodbc',
    'NAME': 'database_name',
    'USER': 'user@server_name',
    'PASSWORD': 'pass',
    'HOST': 'host',
    'PORT': '1433',
    'OPTIONS': {
        'driver': 'FreeTDS',
    }
},

我想在我的Windows PC上本地运行Web服务,然后再向Git提交任何内容。要做到这一点,我使用django-pyodbc-azure 1.0.10,这里提供:

https://github.com/michiya/django-pyodbc-azure/tree/dd87bd3379475ff596210a9243c04c01add0be4d

在我的本地Windows PC上

DATABASES = {
'default': {
    'ENGINE': 'sql_server.pyodbc',
    'NAME': 'database_name',
    'USER': 'user@server_name',
    'PASSWORD': 'pass',
    'HOST': 'server_name.database.windows.net',
    'PORT': '',
    'OPTIONS': {
            'driver': 'SQL Server Native Client 11.0',
            'MARS_Connection': True,
    }
},

我相应地更改了设置,但它出现以下错误:

File "C:\Python27\lib\site-packages\sql_server\pyodbc\base.py", line 396, in execute
raise utils.DatabaseError(*e.args)

DatabaseError: ('42000', '[42000] [Microsoft][SQL Server Native Client 11.0][SQL     Server]Error converting data type nvarchar to int. (8114) (SQLExecDirectW)')

我猜它会连接数据库,但会产生转换错误。

我正在使用邮递员使用

发布服务
http://127.0.0.1:8000/api/GetFixture 

它引发500内部服务器错误。但是这个服务在linux服务器上运行得很好。

1 个答案:

答案 0 :(得分:0)

我使用django-pyodbc而不是django-pyodbc-azure,但是,它是一个分叉。我相信你只需要将它添加到Linux方面的选项中:

'OPTIONS': {
    'host_is_server': True,
    'autocommit': True,
    'unicode_results': True,
    'extra_params': 'tds_version=8.0'
},

在Windows机器上,请务必包括:

'host_is_server': True,
'autocommit': True,
'unicode_results': True,

另请注意,HOST采用以下形式:

'HOST': 'database.domain.com,1433',

...其中1433是SQL Server正在运行的端口。 Django 1.6+需要自动提交。