Почему этот Perl DBI / DBD MySQL (MariaDB) не подключается к работе с locahost?

0
use DBI;

my $dbh = DBI->connect ('DBI:mysql:host=localhost;database=test', 'user', 'password') 
   or die "failed to connect\n";

Результаты в сообщении об ошибке:

DBI connect ("host = localhost; database = test", "user",...) не удалось: невозможно подключиться к серверу MySQL на "localhost" (10061) в строке connect.pl 3.

с использованием: DBI 1.641, perl v5.26.2 в Windows 10 и запуском MariaDB 10.2.14

mysqld запущен на компьютере, и к серверу можно подключить стандартную команду "mysql test -u user -p"

На другом ПК под управлением Windows 7 с очень похожими настройками, но с DBI 1.636 - connect() успешно работает с одним и тем же кодом Perl. Возможно ли, что DBI:mysql и Windows 10 несовместимы?

  • 0
    Попробуйте добавить ... 'user', 'password', {RaiseError=>1})
  • 0
    @Michael: это никак не влияет на поведение самого вызова connect ; только при последующих обращениях к результирующему дескриптору базы данных (когда connect выполнено).
Показать ещё 3 комментария
Теги:
mariadb
dbi

1 ответ

0

Кажется, у вас есть пробел после слова "подключиться", так или иначе... попробуйте следующее:

my $driver   = "mysql";
my $database = "DBname";
my $ip       = "localhost";
my $db       = "DBI:$driver:DBNAME:$ip:database=$database";
my $username = "mysqluser";
my $password = "mysqlpass";

my $cn = DBI->connect($db, $username, $password)
    or print "Couldn't connect to database: " . DBI->errstr . "\n\n";
  • 0
    Perl вообще свободная форма. Любые пробелы между connect и открывающей скобкой не имеют значения. Сбой блока кода, но это не удивительно - во-первых, он имеет «DBNAME» в качестве литерала, а также «DBname» в качестве значения $ database в строке $ db.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню