X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage%2FDBI%2Fmysql.pm;h=89624f49891cc2c11ac9db72b6f89592768eb866;hb=eb7f8fb74b10ef5f3ef254edfc07773979a5e0b4;hp=598507edefd433651fc0c4fbd8cd27715efb51b2;hpb=ef131d82b1a6cad5ef079a341912b0c6d8b7b990;p=dbsrgits%2FDBIx-Class-Historic.git diff --git a/lib/DBIx/Class/Storage/DBI/mysql.pm b/lib/DBIx/Class/Storage/DBI/mysql.pm index 598507e..89624f4 100644 --- a/lib/DBIx/Class/Storage/DBI/mysql.pm +++ b/lib/DBIx/Class/Storage/DBI/mysql.pm @@ -20,6 +20,14 @@ sub with_deferred_fk_checks { $self->_do_query('SET FOREIGN_KEY_CHECKS = 1'); } +sub connect_call_set_strict_mode { + my $self = shift; + + # the @@sql_mode puts back what was previously set on the session handle + $self->_do_query(q|SET SQL_MODE = CONCAT('ANSI,TRADITIONAL,ONLY_FULL_GROUP_BY,', @@sql_mode)|); + $self->_do_query(q|SET SQL_AUTO_IS_NULL = 0|); +} + sub _dbh_last_insert_id { my ($self, $dbh, $source, $col) = @_; $dbh->{mysql_insertid}; @@ -73,12 +81,16 @@ DBIx::Class::Storage::DBI::mysql - Storage::DBI class implementing MySQL specifi Storage::DBI autodetects the underlying MySQL database, and re-blesses the C<$storage> object into this class. - my $schema = MyDb::Schema->connect( $dsn, $user, $pass ); + my $schema = MyDb::Schema->connect( $dsn, $user, $pass, { set_strict_mode => 1 } ); =head1 DESCRIPTION This class implements MySQL specific bits of L. +It also provides a one-stop on-connect macro C which sets +session variables such that MySQL behaves more predictably as far as the +SQL standard is concerned. + =head1 AUTHORS See L