2
爲什麼不行「$ rc = $ dbh-> func('dropdb',$ dbname,'admin');」刪除數據庫db_test_2?DBD :: mysql - 刪除數據庫的問題
#!/usr/bin/perl
use warnings;
use strict;
use 5.010;
use DBI;
my $host = 'localhost';
my $user = 'user';
my $password = 'password';
my($rc, $dbname, @databases);
my $drh = DBI->install_driver('mysql');
$dbname = 'db_test_1';
# use a driver handle (drh)
$rc = $drh->func('createdb', $dbname, $host, $user, $password, 'admin');
say for DBI->data_sources($driver, { host => $host, user => $user, password => $password });
# DBI:mysql:information_schema
# DBI:mysql:db_test_1
# DBI:mysql:mysql
$rc = $drh->func('dropdb', $dbname, $host, $user, $password, 'admin');
say for DBI->data_sources($driver, { host => $host, user => $user, password => $password });
# DBI:mysql:information_schema
# DBI:mysql:mysql
my $dbh = DBI->connect("DBI:mysql:", $user, $password, { RaiseError=>1, AutoCommit=>1 });
$dbname = 'db_test_2';
# reuse the existing connection of a database handle (dbh)
$rc = $dbh->func('createdb', $dbname, 'admin');
say for DBI->data_sources($driver, { host => $host, user => $user, password => $password });
# DBI:mysql:information_schema
# DBI:mysql:db_test_2
# DBI:mysql:mysql
$rc = $dbh->func('dropdb', $dbname, 'admin');
say for DBI->data_sources($driver, { host => $host, user => $user, password => $password });
# DBI:mysql:information_schema
# DBI:mysql:db_test_2
# DBI:mysql:mysql
我不知道,如果這是檢查錯誤的正確方法,但是當我編寫「 $ dbh-> func('dropdb',$ dbname,'admin'); 說$ dbh-> { 'mysql_error'};」 我得到「MySQL服務器已經消失」;但我不知道他爲什麼離開了。 – 2010-01-18 19:39:00
如果你這樣做了,我會在服務器以超級瘋狂的冗長模式運行時檢查mysql日誌(不過你這樣做),我會做下一件事。 – 2010-01-18 20:13:06
我不知道我是否以正確的方式理解了你,但是在我的DBI腳本中RaiseError始終處於打開狀態。我發現的事情是,它不僅是讓服務器消失的「dropdb」,實際上在這個例子中它是「createdb」。但也許這是一個功能。 由於還有其他方法來創建和刪除數據庫,除了不滿意的好奇心之外,這對我來說應該不是什麼大問題。 – 2010-01-20 08:28:26