从昨天开始,我一直在尝试连接到Perl中的SQL Server数据库,这是一个失败。我使用DBI->connect
函数,但是我收到错误,说找不到数据源和驱动程序。我用那个字符串:
'dbi:ODBC:mydb:myhost\myinstance'
我不确定字符串是否正确。有什么想法吗?
编辑:这是我得到的错误:DBI connect('***:***\***','',...) failed: [Microsoft][ODBC Driver
Manager] Data source name not found and no default driver specified (SQL-IM002)
at Collector.pl line 137
答案 0 :(得分:3)
ODBC的DBI连接字符串的格式是'dbi:ODBC:DSN_name'或'dbi:ODBC:DSN = DSN_name'(对于使用数据源名称(DSN)的连接。在这种情况下,DSN_name需要是名称您使用ODBC管理员创建的数据源。在Windows 64位环境中,这种情况稍微复杂一些,因为有2个ODBC管理员,一个用于32位应用程序,一个用于64位应用程序(不能将两者混合使用)。
所以,首先,如果Perl是32位或64位可执行文件,你可以解决这个问题 - 你通常可以从perl -V的输出中看到这一点(寻找archname但是还有其他迹象)。然后根据perl的构建方式找到正确的ODBC Administrator,并使用它创建数据源。最后,如上所述更改您的DBI连接字符串。
还有一种所谓的无DSN连接,它不需要DSN,而是命名DRIVER以及连接数据库所需的任何属性。
如果您使用'dbi:ODBC:DSN_name'而不是'dbi:ODBC:DSN = DSN_name',那么DBD :: ODBC会有什么不同,您可以阅读ODBC - The Connection Process。
您可以在64 bit ODBC找到有关32/64位ODBC以及在哪里找到合适的驱动程序管理器的更多信息。您可以在Drivers, Data Sources and Connection - Perl DBI/DBD::ODBC Tutorial Part 1找到有关DBD :: ODBC和连接的信息。
答案 1 :(得分:0)
这似乎没问题,
use DBI;
#
$dbh = DBI->connect( "dbi:mysql:DBNAME", "root", "password" )
or die "Connection Error $DBI::errstr\n";
N.B。请检查您是否安装了所需的模块。