Perl DBI DBD :: mysql получить имя базы данных с сервера MySQL - PullRequest
2 голосов
/ 06 декабря 2010

У меня есть рабочий сервер, который ежедневно создает разные базы данных на сервере MySql.

Мне нужно написать perl script, который будет работать в конце дня и выполнять следующие действия.

подключиться к серверу mysql и получить список всех имен баз данных, которые у него есть.затем подключитесь к каждому из них и проверьте сохраненные данные.

единственное, что я не смог сделать с DBI and DBD::mysql, - это прочитать имена баз данных с сервера mysql.

я не смог найти функцию DBI, которая работала бы без подключения к базе данных.

любая помощь / пример / URL была бы очень полезна: -)

Ответы [ 2 ]

4 голосов
/ 06 декабря 2010
use DBI;
use strict;
use warnings;
my $dbh = DBI->connect('dbi:mysql:information_schema', $ENV{'USER'}, $ENV{'PASSWD'}, { 'RaiseError' => 1 } );
my $databases = $dbh->selectcol_arrayref('show databases');

use Data::Dumper;
print Dumper $databases;
__END__
$VAR1 = [
      'information_schema',
      'mysql',
      'your_database_1',
      'your_database_2'
    ];

Будут показаны только базы данных, авторизованные для пользователя, к которому вы подключаетесь.

4 голосов
/ 06 декабря 2010

Попробуйте использовать INFORMATION_SCHEMA database - это имя базы данных всегда существует и, следовательно, может быть жестко запрограммировано в DBI.

Чтобы быть более конкретным , эквивалент SHOW DATABASES равен:

SELECT SCHEMA_NAME AS `Database`
FROM INFORMATION_SCHEMA.SCHEMATA
...