【发布时间】:2018-08-14 12:09:50
【问题描述】:
我无法找出正确的方式来安排从 Docker 容器连接到外部数据库所需的配置文件。整个事情都在 Windows 上运行,Docker 是 Debian,我使用 FreeTDS 按照this tutorial 建立连接。我也一直在关注this SO question 的建议。
使用非常有用的 Flask 调试器,我可以知道我正在使用以下连接字符串连接到服务器:
'DSN=server_name; DATABASE=db_name; UID=usr; PWD=pw'
这些是我的配置文件的内容:
# odbcinst.ini in /etc/ and /
[FreeTDS]
Description = FreeTDS driver
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
# odbc.ini in /etc/ and /root/.odbc.ini
[data_source]
Driver = FreeTDS
Servername = server_name
Port = 1433
Database = db_name
# freetds.conf in /etc/freetds/
[global]
tds version = 7.4
[server_name]
host = server_ip
port = 1433
[IM002] [unixODBC][Driver Manager]未找到数据源名称,且未指定默认驱动程序 (0) (SQLDriverConnect)
但是,我可以使用tsql -H server_ip -p 1433 -U usr -P pw 通过命令行连接到数据库。 isql -v data_source username pwd 也可以。 osql 给出以下错误:
path/libtdsodbc.so 不是可执行文件
osql:错误:找不到数据源的驱动程序
我无法找出问题所在.. 无济于事 我对 Linux 也很缺乏经验。非常感谢任何帮助!
【问题讨论】:
-
你的数据库也被 dockerized 了吗?当你说你能够连接到数据库时,它是从 Docker 容器中进行的吗?
-
@Mornor 我看到我的解释很模棱两可,现在修正了。对不起。
-
你暴露了Docker镜像的
:1433端口了吗?因此,在 Dockerfile 中:EXPOSE 1433和 Docker 命令:docker run -p 1433:1433 [...] -
能否提供一些关于如何改进这篇文章的见解?还是不是主题?
-
@Mornor 暴露,没有帮助..
标签: python linux docker odbc pyodbc