首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django 2.0.9在Mac上使用托管的MS Sql Server,变量二进制转换错误

Django 2.0.9在Mac上使用托管的MS Sql Server,变量二进制转换错误
EN

Stack Overflow用户
提问于 2018-10-15 17:40:08
回答 1查看 218关注 0票数 0

我假设这不是一个常见的场景--但是我在我的Mac上运行Django 2.0.9,pyodbc 4.0.24,django-pyodbc-azure 2.0.4.1和ODBC 17,与运行在Microsoft SQL Server 2017 Docker中的SQL Server对话。

出于我无法控制的原因,我正在为一个系统建模,在这个系统中,上传被存储为一个BLOB,用Server的术语来说是一个变量类型。

无论我做什么,只要声明BLOB类型并尝试加载一个夹具(没有BLOB),我就会得到错误:

无法加载mytype.MyType(pk=3455):('22018','22018SQL ServerImplicit从数据类型varchar转换为varbinary(max)。使用转换函数运行此查询。(257) (SQLExecDirectW)')

模式如下:

代码语言:javascript
运行
复制
class MyType(models.Model):

    id = models.BigAutoField(primary_key=True)
    desc = models.CharField(
        max_length=4000, blank=True, null=True)
    name = models.CharField(max_length=8, blank=True, null=True)
    blah_id = models.BigIntegerField(blank=True, null=True)
    related_thing = models.ForeignKey(
        Thing,
        on_delete=models.PROTECT,
        blank=True,
        null=True)
    ... etc ...

    pdf = models.BinaryField(blank=True, null=True) # here is the sticking point

    class Meta:
        # etc

除了教学大纲和教学大纲之外,我总是使用一个夹具加载数据,但总是出错:

安装夹具‘/path/ to /max/0011_mydata.json’:未能加载mytype.MyType(pk=3455):('22018','22018SQL ServerImplicit‘从数据类型varchar转换为varbinary(max)。请使用转换函数运行此查询。(257) (SQLExecDirectW)')

我认为这个错误是个问题,真正的问题在于一个特定于Docker中的Mac <-> Sql Server的驱动程序。

任何帮助都是非常感谢的!

EN

回答 1

Stack Overflow用户

发布于 2018-10-16 15:55:09

在本例中,问题是连接字符串:

代码语言:javascript
运行
复制
DATABASES = {
# Microsoft SQL Server version
'default': {
    'ENGINE': 'sql_server.pyodbc',
    'NAME': 'foo',
    'USER': 'blah',
    'PASSWORD': 'password',
    'HOST': '0.0.0.0',
    'PORT': '1433',
    'OPTIONS': {
        'driver': 'FreeTDS',
    },
},
}

应该是

代码语言:javascript
运行
复制
DATABASES = {
# Microsoft SQL Server version
'default': {
    'ENGINE': 'sql_server.pyodbc',
    'NAME': 'foo',
    'USER': 'bar',
    'PASSWORD': 'password',
    'HOST': '0.0.0.0',
    'PORT': '1433',
    'OPTIONS': {
        'driver': 'ODBC Driver 17 for SQL Server',
    },
},
}

FreeTDS是问题所在。我不知道为什么,但是把它从链条上去掉就解决了问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52822085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档