【问题标题】:Perl DBI DBD::mysql get the databases name from mysql serverPerl DBI DBD::mysql 从 mysql 服务器获取数据库名称
【发布时间】:2010-12-06 13:34:39
【问题描述】:

我有一个生产服务器,每天在 MySql 中创建不同的数据库 服务器。

我需要写一个perl script,它会在一天结束时运行 并执行以下操作。

连接到mysql服务器并获取所有数据库名称的列表 它有。然后连接到它们中的每一个并检查存储的数据。

我唯一不能用 DBI and DBD::mysql 做的事情 已从 mysql 服务器读取数据库名称。

我找不到任何 DBI 功能在不连接到 数据库优先。

任何帮助/示例/网址都会非常有帮助:-)

【问题讨论】:

  • 在 Sybase 中,有一个标准的“主”数据库,用于存储此类信息。例如。为您的目的master..sysdatabases。不确定 MySql

标签: mysql perl dbi


【解决方案1】:
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'
    ];

只会显示对您连接的用户授权的数据库。

【讨论】:

  • 谢谢 :-) 那行得通,我已将它添加到我的代码中,它就像一个魅力 :-) 再次感谢您。
【解决方案2】:

尝试使用INFORMATION_SCHEMA 数据库 - 该数据库名称始终存在,因此可以硬编码到 DBI 中。

要成为more specific,相当于SHOW DATABASES是:

SELECT SCHEMA_NAME AS `Database`
FROM INFORMATION_SCHEMA.SCHEMATA

【讨论】:

    猜你喜欢
    • 2016-06-04
    • 2018-05-18
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-21
    • 2012-09-05
    相关资源
    最近更新 更多