2015-04-14 4 views
0
  • Perl версии 5.8.8
  • MySQL версии 5.5.42
  • DBI версия 1,633 и DBD :: MySQL версия 4,022

Я на сервере общедоступного хостинга. У меня есть файл модуля perl, который отлично работает. Я могу использовать его подсистемы без проблем из файла сценария perl. если я добавлю это в файл pm,с помощью DBI вызывает файл модуля компиляции Ошибка

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 начинает возмущаться «компиляции потерпел неудачу в требуют»

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

Я попытался это, но прибегая к помощи никакого результата. Есть идеи?

+0

Исправьте свое имя источника данных: он должен начинаться с 'DBI:'. Похоже, что что-то не так с установкой вашего модуля драйвера DBD :: mysql. Попробуйте добавить 'use DBD :: mysql' beneath' use DBI' и посмотреть, какая ошибка дает вам – Borodin

ответ

0

Я хотел создать дескриптор dbi, который мог бы использовать субмастеры этого модуля, но я получал ошибку, прежде чем я смог использовать это (как я упомянул в вопросе). Может быть, это функция безопасности модулей, Apprently я могу использовать только DBI в смежном виде,

использование DBI;
sub databaseHandle {
my $ username = "username";
my $ password = "password";
my $ dsn = "DBI: mysql: database";
my $ dbh = DBI-> connect ($ dsn, $ username, $ password) или die $ DBI :: errstr;
return $ dbh}
my $ dbh = databaseHandle();

Я не знаю особую причину, но это то, как я ее использую. Спасибо за помощь и идею.

-2

Источник данных должен быть «DBI:mysql:database=my_database», где вы передаете вид и название своей базы данных.

Ошибка возникает из-за того, что должен быть установлен модуль драйвера базы данных DBD::mysql. Запросите у хостера, установлен ли этот модуль или вы можете его самостоятельно установить.

+0

Отсутствующий модуль драйвера приведет к обычному 'Can not locate DBD/mysql.pm in @ INC'. OP получает 'Compilation failed in require', что означает, что файл есть, но содержит ошибку – Borodin

+0

Я упомянул в своем вопросе, что у меня есть dbd :: mysql версия 4.022, так что она есть. – shakAttack