使用DBI导致模块文件编译错误

时间:2015-04-14 07:40:05

标签: perl perl-module dbi

  • perl版本是5.8.8
  • mysql版本是5.5.42
  • DBI版本为1.633,DBD :: mysql版本为4.022

我在共享托管服务器上。 我有一个perl模块文件,工作正常。我可以使用它的sub而没有perl脚本文件的问题。如果我把它添加到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脚本文件开始抱怨" 编译失败在require"

my $dbh = DBI->connect($dsn, $username, $password ) or die $DBI::errstr;

我尝试使用谷歌搜索但没有结果。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我想创建一个dbi句柄,可以被该模块的子节点使用但我在使用之前遇到错误(正如我在问题中所提到的)。 可能是模块的安全功能,显然我只能在子表单中使用dbi,

  

使用DBI;
  sub databaseHandle {
  我的$ username ="用户名";
  我的$ password ="密码";
  我的$ dsn =" DBI:mysql:database&#34 ;;
  我的$ dbh = DBI->连接($ dsn,$ username,$ password)或死$ DBI :: errstr;
  返回$ dbh}
  我的$ dbh = databaseHandle();

我不知道具体原因,但这就是我使用它的方式。 感谢您的帮助和想法。

答案 1 :(得分:-2)

数据源必须是" DBI:mysql:database=my_database",您可以在其中传递数据库的种类和名称。

发生此错误是因为必须安装数据库驱动程序模块DBD::mysql。询问您的主机是否已安装该模块或是否可以自行安装。