我在安装了Unix ODBC驱动程序的RedHat机器上。我已经使用了类似下面的结构来连接MySQL数据库很长一段时间了:
my @connection_userTracking = (
"DBI:mysql:;"
. "mysql_read_default_file=/var/www/.my.cnf;"
. "mysql_read_default_group=myProject",
undef,
undef,
{ PrintError => 0,
RaiseError => 1,
AutoCommit => 1
}
);
这使我可以将我的数据库凭据存储在单独的文件中,而不是在我的Perl脚本中对它们进行硬编码。我假设MS SQL和Oracle必须有类似的东西。每个连接字符串的格式是什么?
我试过了:
my @connection_MSSQL = (
"DBI:ODBC:;"
. "mysql_read_default_file=/var/www/.my.cnf;"
. "mysql_read_default_group=myProjectMSSQL",
undef,
undef,
{ PrintError => 0,
RaiseError => 1,
AutoCommit => 1
}
);
在配置文件中使用DSN,用户名和密码,但是barfs包含消息:
失败:[unixODBC] [驱动程序管理器]找不到数据源名称,并且未指定默认驱动程序
我将DSN添加回第一行的代码
"DBI:ODBC:DSN=my.db.host.com;"
那个barfs以及错误
失败:[unixODBC] [FreeTDS] [SQL Server]用户登录失败''
我不是Linux ODBC的专家,所以也许可以将用户名和密码放在系统odbc.ini文件中,但我不喜欢这样。我宁愿拥有项目特定的文件。
对于MS SQL和Oracle,这类事情是否可行?