X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FSchema%2FLoader%2FDBI%2Fmysql.pm;h=9e78f090682315c856420a7921f5121ba945d26b;hb=9990e58f49603b81e3c1195c0e83595b0333c8df;hp=5d9cd2e760ff95b0aa18464142eb2a63a4690076;hpb=26334ec166bf25d77c0342c85efebe853303ff41;p=dbsrgits%2FDBIx-Class-Schema-Loader.git diff --git a/lib/DBIx/Class/Schema/Loader/DBI/mysql.pm b/lib/DBIx/Class/Schema/Loader/DBI/mysql.pm index 5d9cd2e..9e78f09 100644 --- a/lib/DBIx/Class/Schema/Loader/DBI/mysql.pm +++ b/lib/DBIx/Class/Schema/Loader/DBI/mysql.pm @@ -6,7 +6,7 @@ use base 'DBIx::Class::Schema::Loader::DBI'; use Carp::Clan qw/^DBIx::Class/; use Class::C3; -our $VERSION = '0.06000'; +our $VERSION = '0.07000'; =head1 NAME @@ -37,9 +37,11 @@ sub _table_fk_info { my ($self, $table) = @_; my $dbh = $self->schema->storage->dbh; - my $table_def_ref = $dbh->selectrow_arrayref("SHOW CREATE TABLE `$table`") - or croak ("Cannot get table definition for $table"); - my $table_def = $table_def_ref->[1] || ''; + + my $table_def_ref = eval { $dbh->selectrow_arrayref("SHOW CREATE TABLE `$table`") }; + my $table_def = $table_def_ref->[1]; + + return [] if not $table_def; my $qt = qr/["`]/; @@ -54,10 +56,10 @@ sub _table_fk_info { my $f_cols = shift @reldata; my @cols = map { s/(?: \Q$self->{_quoter}\E | $qt )//x; lc $_ } - split(/\s*,\s*/, $cols); + split(/$qt?\s*$qt?,$qt?\s*$qt?/, $cols); my @f_cols = map { s/(?: \Q$self->{_quoter}\E | $qt )//x; lc $_ } - split(/\s*,\s*/, $f_cols); + split(/$qt?\s*$qt?,$qt?\s*$qt?/, $f_cols); push(@rels, { local_columns => \@cols, @@ -181,8 +183,8 @@ sub _extra_column_info { if ($dbi_info->{mysql_values}) { $extra_info{extra}{list} = $dbi_info->{mysql_values}; } - if ( $dbi_info->{COLUMN_DEF} =~ /^CURRENT_TIMESTAMP\z/i - && $dbi_info->{mysql_type_name} =~ /^TIMESTAMP\z/i) { + if ( lc($dbi_info->{COLUMN_DEF}) eq 'current_timestamp' + && lc($dbi_info->{mysql_type_name}) eq 'timestamp') { $extra_info{default_value} = \'CURRENT_TIMESTAMP'; }