使用DBI导致模块文件编译错误
using DBI causes module file compilation Error
- perl 版本是 5.8.8
- mysql 版本为 5.5.42
- DBI 版本为 1.633,DBD::mysql 版本为 4.022
我在共享主机服务器上。
我有一个工作正常的 perl 模块文件。我可以从 perl 脚本文件中毫无问题地使用它的 subs。如果我将其添加到 pm 文件,
use DBI;
my $username = "username";
my $password = "password";
my $dsn = "DBD:mysql:database"; # i changed DBD to DBI as well but no good
仍然一切正常。
但是一旦我将以下行添加到 perl 模块文件中,perl 脚本文件就会开始抱怨“Compilation failed in require”
my $dbh = DBI->connect($dsn, $username, $password ) or die $DBI::errstr;
我尝试用谷歌搜索但没有结果。有什么想法吗?
数据源必须是“DBI:mysql:database=my_database
”,您可以在其中传递数据库的种类和名称。
出现错误是因为必须安装数据库驱动模块DBD::mysql
。向您的主机商询问该模块是否已安装或您是否可以自行安装。
我想创建一个 dbi 句柄,它可以被该模块的子程序使用,但是在我可以使用它之前我遇到了错误(正如我在问题中提到的)。
可能是模块的安全特性,显然我只能在子表单中使用 dbi,
use DBI;
sub databaseHandle{
my $username = "username";
my $password = "password";
my $dsn = "DBI:mysql:database";
my $dbh = DBI->connect($dsn, $username, $password ) or die $DBI::errstr;
return $dbh }
my $dbh = databaseHandle();
我不知道具体原因,但这就是我使用它的方式。
感谢所有的帮助和想法。
- perl 版本是 5.8.8
- mysql 版本为 5.5.42
- DBI 版本为 1.633,DBD::mysql 版本为 4.022
我在共享主机服务器上。 我有一个工作正常的 perl 模块文件。我可以从 perl 脚本文件中毫无问题地使用它的 subs。如果我将其添加到 pm 文件,
use DBI;
my $username = "username";
my $password = "password";
my $dsn = "DBD:mysql:database"; # i changed DBD to DBI as well but no good
仍然一切正常。 但是一旦我将以下行添加到 perl 模块文件中,perl 脚本文件就会开始抱怨“Compilation failed in require”
my $dbh = DBI->connect($dsn, $username, $password ) or die $DBI::errstr;
我尝试用谷歌搜索但没有结果。有什么想法吗?
数据源必须是“DBI:mysql:database=my_database
”,您可以在其中传递数据库的种类和名称。
出现错误是因为必须安装数据库驱动模块DBD::mysql
。向您的主机商询问该模块是否已安装或您是否可以自行安装。
我想创建一个 dbi 句柄,它可以被该模块的子程序使用,但是在我可以使用它之前我遇到了错误(正如我在问题中提到的)。 可能是模块的安全特性,显然我只能在子表单中使用 dbi,
use DBI;
sub databaseHandle{
my $username = "username";
my $password = "password";
my $dsn = "DBI:mysql:database";
my $dbh = DBI->connect($dsn, $username, $password ) or die $DBI::errstr;
return $dbh }
my $dbh = databaseHandle();
我不知道具体原因,但这就是我使用它的方式。 感谢所有的帮助和想法。