我已经尝试了两天让我的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中相当舒服,我只是不知道哪些包正在寻找哪些文件。我也不知道我应该拿出或放回哪些选项,如果有的话,让事情有效。
答案 0 :(得分:1)
为了使这个工作,我的第一篇文章中详述的配置实际上工作正常。唯一的问题是odbc.ini
位于错误的位置
sudo cp /etc/freetds/odbc.ini /etc/odbc.ini
会做的。或者只是将odbc.ini
(您可能需要创建)放在/etc
中。显然只有freetds.conf
属于/etc/freetds
。