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