Alzabo
view release on metacpan or search on metacpan
lib/Alzabo/Driver/MySQL.pm view on Meta::CPAN
$version =~ s/[^\d\.]//g;
return $version;
}
sub major_version { ($_[0]->_version_components)[0] }
sub schemas
{
my $self = shift;
my $dbh = $self->_make_dbh( name => '',
@_ );
my @schemas = $dbh->func('_ListDBs');
Alzabo::Exception::Driver->throw( error => $dbh->errstr )
if $dbh->errstr;
return @schemas;
}
sub create_database
{
my $self = shift;
my $db = $self->{schema}->db_schema_name;
my $dbh = $self->_make_dbh( name => '',
@_ );
$dbh->func( 'createdb', $db, 'admin' );
Alzabo::Exception::Driver->throw( error => $dbh->errstr )
if $dbh->errstr;
$dbh->disconnect;
}
sub drop_database
{
my $self = shift;
my $db = $self->{schema}->db_schema_name;
my $dbh = $self->_make_dbh( name => '',
@_ );
$dbh->func( 'dropdb', $db, 'admin' );
Alzabo::Exception::Driver->throw( error => $dbh->errstr )
if $dbh->errstr;
$dbh->disconnect;
}
sub _connect_params
{
my $self = shift;
my %p = @_;
%p = validate( @_, { name => { type => SCALAR },
user => { type => SCALAR | UNDEF,
optional => 1 },
password => { type => SCALAR | UNDEF,
optional => 1 },
host => { type => SCALAR | UNDEF,
optional => 1 },
port => { type => SCALAR | UNDEF,
optional => 1 },
map { $_ => 0 } grep { /^mysql_/ } keys %p,
} );
my $dsn = "DBI:mysql:$p{name}";
$dsn .= ";host=$p{host}" if $p{host};
$dsn .= ";port=$p{port}" if $p{port};
foreach my $k ( grep { /^mysql_/ } keys %p )
{
$dsn .= ";$k=$p{$k}";
}
return [ $dsn, $p{user}, $p{password},
{ RaiseError => 1,
AutoCommit => 1,
PrintError => 0,
}
];
}
sub next_sequence_number
{
# This will cause an auto_increment column to go up (because we're
# inserting a NULL into it).
return undef;
}
sub rollback
{
my $self = shift;
eval { $self->SUPER::rollback };
if ( my $e = $@ )
{
unless ( $e->error =~ /Some non-transactional changed tables/ )
{
if ( Alzabo::Utils::safe_can( $e, 'rethrow' ) )
{
$e->rethrow;
}
else
{
Alzabo::Exception->throw( error => $e );
}
}
}
}
sub get_last_id
{
my $self = shift;
( run in 0.553 second using v1.01-cache-2.11-cpan-39bf76dae61 )