Проблемы с модулем Mysql Perl на Mac - PullRequest
1 голос
/ 04 декабря 2010

Установили модуль Perl Mysql и дважды проверили (см. # 3 ниже), но все равно получаете ошибку (# 1 ниже) при использовании.

Если я использую DBD::Mysql, то оператор connect [Mysql->connect('localhost')] не работает (# 2 ниже)

Перепробовал все синтаксические комбинации на документацию, включая прописные буквы и т. Д.

В Mac OS X 10.6.

ТИА, Gary

1

Can't locate Mysql.pm in @INC (@INC contains: /Library/Perl/Updates/5.10.0/darwin-thread-multi-2level /Library/Perl/Updates/5.10.0 /System/Library/Perl/5.10.0/darwin-thread-multi-2level /System/Library/Perl/5.10.0 /Library/Perl/5.10.0/darwin-thread-multi-2level /Library/Perl/5.10.0 /Network/Library/Perl/5.10.0/darwin-thread-multi-2level /Network/Library/Perl/5.10.0 /Network/Library/Perl /System/Library/Perl/Extras/5.10.0/darwin-thread-multi-2level /System/Library/Perl/Extras/5.10.0 .)

2

Can't locate object method "connect" via package "mysql" (perhaps you forgot to load "mysql"?)

3

cpan[1]> install DBD::mysql
CPAN: Storable loaded ok (v2.18)
Going to read '/private/var/root/Library/Application Support/.cpan/Metadata'
  Database was generated on Sat, 04 Dec 2010 00:31:51 GMT
DBD::mysql is up to date (4.018).

1 Ответ

3 голосов
/ 04 декабря 2010

DBD::mysql - драйвер базы данных.Вы не должны использовать это непосредственно в нормальных случаях.Вместо этого вы должны использовать DBI со строкой подключения, специфичной для MySQL.

Пример:

#!/usr/bin/env perl

use strict;
use warnings;

use DBI;

my %db = (
    'database' => 'leaking_wiki',
    'host'     => 'localhost',
    'port'     => '3306',
    'username' => 'root',
    'password' => 't0p_53cr3t',
);

my $dbh = DBI->connect(                                                                                                                                      
    "DBI:mysql:database=$db{database};host=$db{host};port=$db{port}",                                                                                        
    $db{username}, $db{password} )                                                                                                                           
  or die $DBI::errstr;
...