我有一个生产服务器,每天在MySql中创建不同的数据库 服务器
我需要写一个会在一天结束时运行的perl script
并执行以下操作。
连接到mysql服务器并获取数据库的所有名称列表 它有。然后连接到每个并检查存储的数据。
我唯一无法用DBI and DBD::mysql
做的事情
从mysql服务器读取数据库名称。
我无法找到任何可以在没有连接的情况下工作的DBI功能 数据库第一。
任何帮助/示例/网址都会非常有用: - )
答案 0 :(得分:4)
尝试使用INFORMATION_SCHEMA数据库 - 该数据库名称始终存在,因此可以硬编码到DBI中。
要成为more specific,相当于SHOW DATABASES
的是:
SELECT SCHEMA_NAME AS `Database`
FROM INFORMATION_SCHEMA.SCHEMATA
答案 1 :(得分:4)
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'
];
只会显示授权给您所连接用户的数据库。