Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Docker Django数据库连接错误:UNICODE使用ASCII编码';UTF-8';和UNICODE';UTF-16LE';_Python_Django_Docker_Pyodbc - Fatal编程技术网

Python Docker Django数据库连接错误:UNICODE使用ASCII编码';UTF-8';和UNICODE';UTF-16LE';

Python Docker Django数据库连接错误:UNICODE使用ASCII编码';UTF-8';和UNICODE';UTF-16LE';,python,django,docker,pyodbc,Python,Django,Docker,Pyodbc,更新:我在odbc.log的错误中添加了更多的行,因为一个用户建议可能是其他问题 我在尝试连接到远程数据库(在不同的服务器上)时遇到docker和django的问题 使用Python 3.4和django 1.9.7。在本地运行时,我可以很好地执行runserver,并且可以在docker容器中使用tsql或pyodbc.connect()进行连接。但是,在项目的docker容器上执行runserver时,我收到以下错误: [ODBC][14][1604961520.418108][SQLDri

更新:我在odbc.log的错误中添加了更多的行,因为一个用户建议可能是其他问题

我在尝试连接到远程数据库(在不同的服务器上)时遇到docker和django的问题

使用Python 3.4和django 1.9.7。在本地运行时,我可以很好地执行runserver,并且可以在docker容器中使用tsql或pyodbc.connect()进行连接。但是,在项目的docker容器上执行runserver时,我收到以下错误:

[ODBC][14][1604961520.418108][SQLDriverConnectW.c][290]
条目:
连接=0x7f48618ecba0
窗口Hdl=(零)
Str In=[UID={{UID};PWD={{password}};DRIVER=FreeTDS;SERVER={{serverIP};DATABASE={{databaseName};unicode_results=True;][length=110]
Str Out=(无)
Str Out Max=0
Str Out Ptr=(无)
完成=0
使用编码ASCII“UTF-8”和UNICODE“UTF-16LE”的UNICODE
[ODBC][14][1604961520.444358][SQLDriverConnectW.c][848]
退出:[SQL\U错误]
[ODBC][14][1604961520.444418][SQLDriverConnect.c][748]
条目:
连接=0x7f48618ecba0
窗口Hdl=(零)
Str In=[UID={{UID};PWD={{password}};DRIVER=FreeTDS;SERVER={{serverIP};DATABASE={{databaseName};unicode_results=True;][length=110]
Str Out=0x7f4865297db0
Str Out Max=2048
Str Out Ptr=(无)
完成=0
DIAG[08001][FreeTDS][SQL Server]无法连接到数据源

注释中提到了此错误:

安装了多个驱动程序管理器,而您的应用程序使用了错误的驱动程序管理器,或者驱动程序管理器未正确构建

我已经尝试了我能想到的一切,并且感觉我忽略了一些非常明显的事情,但是我没有运气发现这个错误,或者我甚至没有使用多个驱动程序(如果是的话,如何修复)

这里是其他相关的安装文件,也许有人会发现一些东西或有一个想法。非常感谢您的帮助,谢谢您抽出时间

django数据库设置.py

settings['DATABASES'] = {
        'default': {
            'HOST': '{{serverIP}}',
            'NAME': '{{databaseName}}',
            'ENGINE': 'sql_server.pyodbc',
            'USER': '{{UID}}',
            'PASSWORD': '{{password}}',
            'OPTIONS': {
                'unicode_results': True,
                'host_is_server': True
            }
        },
    }
odb.ini

[UAT_SERVER]
Description = UAT Database
Driver = FreeTDS
Database = {{databaseName}}
Servername = UAT_SERVER //I have also tried using the server IP here with no luck
Port = 1433
TDS Version = 4.2
[ODBC]
Trace = Yes
TraceFile = /tmp/odbc.log

[FreeTDS]
Description = FreeTDS Driver
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
TDS_Version = 4.2
Trace = Yes
TraceFile = /tmp/freetds.log //This seems to do nothing, as no file is created.
ForceTrace = Yes
odbcinst.ini

[UAT_SERVER]
Description = UAT Database
Driver = FreeTDS
Database = {{databaseName}}
Servername = UAT_SERVER //I have also tried using the server IP here with no luck
Port = 1433
TDS Version = 4.2
[ODBC]
Trace = Yes
TraceFile = /tmp/odbc.log

[FreeTDS]
Description = FreeTDS Driver
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
TDS_Version = 4.2
Trace = Yes
TraceFile = /tmp/freetds.log //This seems to do nothing, as no file is created.
ForceTrace = Yes
freetds.conf

[UAT_SERVER]
host = {{server ip}}
port = 1433
database= {{databaseName}}
tds version = auto

回来更新一下,以防有人对django项目的dockerizing不熟悉,并像我一样遇到这个问题。我最初认为的问题(unicode问题)根本不是问题所在。我进一步挖掘并创建了一个freetds日志文件,在那里我发现真正的错误是我没有在django设置中为数据库连接定义端口


事实证明,尽管使用了默认端口(1433),但仍需要在django设置数据库连接中指定端口。一旦我这么做了,我就可以走了

我可能错了,但它看起来不像您突出显示的Unicode错误。它感觉更多的是关于如何建立可能的联系的信息。这是我第一次尝试为一个项目设置docker容器,这是一条崎岖不平的道路。我能提供更多可能有用的信息吗?您可以添加到项目中,然后让应用程序的启动代码显示(或记录,或以其他方式披露)由
odbcinst.j()返回的结果。
。这至少表明unixODBC是按照您的预期设置的。看起来我确实可以得到一个不同的错误。我注意到odbcinst.ini不在预期的用户目录中,所以在创建容器时我复制了它。从那里我得到了错误“无法连接:自适应服务器不可用或不存在”。我正在追查这篇文章,稍后将再次发表评论!谢谢你迄今为止的帮助!