无法使用FreeTDS

时间:2016-05-05 14:51:19

标签: debian odbc freetds

我已经尝试了两天让我的Debian 8 Google Cloud计算机连接到Microsoft SQL 2012数据库。我知道数据库没问题,因为我在Windows中这样做没有问题。现在我正在尝试将一些用Python编写的网站代码从Windows迁移到Debian,但是我无法访问该网站的整个数据库。

当然,我一直在搜索关于这个主题的很多。正如经常发生的那样,我发现了相互矛盾的信息,并且每个指出它都是“正确”的指南都让我失望了。最重要的是, FreeTDS email list  没有,或者至少是自动拒绝新订阅者。

正如我所说的,我正在使用GCloud服务器上的Debian 8。由于身份验证密钥问题SCP无法正常工作,因此我只有shell访问权限,只能复制到主目录或从主目录复制。我已经安装了UnixODBC,tdsodbc和freetds,以及我发现人们建议的一些软件包。这都是sudo apt-get,不是来自任何网站的来源或直接。

我的文件不在/etc,它们位于/etc/freetds。我还找到了一些说明我需要sudo cp /etc/freetds/freetds.conf ~/.freetds.conf的指南。注意“。”在目标文件名的开头。我还有/etc/freetds/odbc.ini,它定义了我的DSN。在freetds.conf中,我定义了一个数据库条目,odbc.ini选项中的“Databasename”设置为与freetds.conf中的部分名称相同的值。我在/etc/odbcinst.ini中定义了我的驱动程序(不,我不知道为什么它在/ etc中,但其他人在/etc/freetds中)。下面我贴了我的三个文件。请注意,我已从第一个删除了注释,以使这里的内容更短。评论在实际文件中完好无损。

我在那里设置了设置线以及其他几个,但是 one post I found 没有那条线和其他几条线,它说效果会更好。

这是有趣的部分:tsql完美运行 - 如果我执行tsql -S DBName -U username它会连接,但isql每次都会失败,并出现相同的错误。它总是

[IM002][unixodbc][driver manager] No data source name found, and no default driver specified. 
[ISQLERROR]: Could not SQLConnect.

如果我给isql一个根本没有定义的数据库的名称,我会得到完全相同的错误。例如,我会在

中收到IM002错误
isql -v testabc

这告诉我,有些东西找不到它需要的所有configuration/ini个文件。但是tsql works,而isql(当然,我的Python脚本)不起作用。我是Debian的新手,只有SSH访问这个Debian机器,所以我不能使用GUI工具来使这更容易。我在Bash和VIM中相当舒服,我只是不知道哪些包正在寻找哪些文件。我也不知道我应该拿出或放回哪些选项,如果有的话,让事情有效。

1 个答案:

答案 0 :(得分:1)

为了使这个工作,我的第一篇文章中详述的配置实际上工作正常。唯一的问题是odbc.ini位于错误的位置 sudo cp /etc/freetds/odbc.ini /etc/odbc.ini 会做的。或者只是将odbc.ini(您可能需要创建)放在/etc中。显然只有freetds.conf属于/etc/freetds