我正在 freebsd 上通过 perl 尝试连接到 mssql 。 在Linux上很简单:
apt-get install libdbi-perl freetds-bin libdbd-sybase-perl
之后我用设置创建freetds.conf文件。例如:
[MSSQL]
host = %my server%
port = 1433
tds version = 7.0
它的工作。对于我尝试的相同逻辑:
cd /usr/ports/databases/p5-DBI/ && make install clean
cd /usr/ports/databases/freetds/ && make install clean
cd /usr/ports/databases/p5-DBD-Sybase/ && make install clean
然后我从Linux运行相同的代码:
use DBI;
my $hostname = 'MSSQL';
my $database = %my database%;
my $user = %my user%;
my $pass = %my password%;
my $dbh = DBI->connect("DBI:Sybase:server=$hostname;database=$database", $user, $pass);
我得到了:
DBI connect('server=MSSQL;database=%my database%, %user%, %password%) failed: (no error string)
我会感谢您的帮助。
答案 0 :(得分:2)
您还可以使用pkg工具在freebsd框中安装软件包。 所以,像这样:
pkg install p5-DBI p5-DBD-Sybase freetds
关于你的perl检查脚本,我想你还需要包括:
use DBD:Sybase;
我会尝试将DBI:Sybase:server=...
更改为dbi:Sybase:server=...
但如果您需要确认,请查看此网址:http://search.cpan.org/~mewp/DBD-Sybase-1.15/Sybase.pm
希望我的0.002有帮助! ; - )
答案 1 :(得分:0)
似乎不同版本的Sybase.pm具有不同的DBI->连接参数解析逻辑。
我刚刚发现Sybase.pm $ Id 1.115 $不能用于表单调用
DBI->connect('DBI:Sybase:server=mydbhost:database=dbname','username','password')
(注意'mydbhost'和'database'之间的冒号),而Sybase.pm $ Id 1.44 $完全可以。 或者这是DBI的差异?
将其发布给googlers。