0

我正在尝试第一次测试连接性。像这样

#!/usr/bin/perl -w
use DBI;
# DBD::ODBC
use CGI::Carp qw(fatalsToBrowser);
my $dsn = 'DBI:ODBC:Driver={SQL Server}';
#my $host = 'localhost';
my $host = 'mysql';
my $database = 'test';
my $user = 'root';
my $auth = 'mukesh';
# Connect via DBD::ODBC by specifying the DSN dynamically.
my $dbh = DBI->connect("$dsn;Server=$host;Database=$database",$user,$auth) || die "Database connection not made: $DBI::errstr"; 

但我一次又一次地收到这个错误。 Got error [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied. (SQL-08001) [state was 08001 now 01000] [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()). (SQL-01000) when connecting to

在执行此操作之前,我需要在我的电脑中配置什么吗?

4

2 回答 2

3

您似乎正在使用 Microsoft SQL 服务器连接到 MySQL 数据库——这不起作用。

你可能想要类似的东西;

my $dsn = "DBI:mysql:database=$database;host=$host;port=3306";
my $dbh = DBI->connect($dsn, $user, $auth) || die "Database connection not made: $DBI::errstr"; 

但是您似乎也对主机感到困惑-您确定 mysql 数据库的主机名是“mysql”吗?如果它在同一台机器上运行,则 localhost 是正确的。

我也希望这些不是您真正的根凭据-也许在公共论坛上发布这些凭据不是一个好主意,而且以根身份连接几乎肯定不是您想要做的,请考虑使用仅具有所需的特定用户权限。

于 2013-09-15T11:54:24.753 回答
1

假设您使用的是 MySQL。

#!/usr/bin/perl
use strict;
use warnings;

use DBI();

my $dbh = DBI->connect("DBI:mysql:database=db_name;host=localhost",
        "db_user", "password",
        {'RaiseError' => 1});

main();
exit(0);

sub main {
    testMySQL();
}
sub testMySQL() {
    if ($dbh) {
        print "Connection to the server successful!";
    }
}
于 2013-09-15T12:39:50.707 回答