Committer: ailyin
LJSUP-9507 (warn about database/SQL errors on production/staging servers)U trunk/cgi-bin/ljdb.pl
Modified: trunk/cgi-bin/ljdb.pl =================================================================== --- trunk/cgi-bin/ljdb.pl 2011-08-15 01:41:58 UTC (rev 19712) +++ trunk/cgi-bin/ljdb.pl 2011-08-15 02:21:57 UTC (rev 19713) @@ -135,8 +135,25 @@ return ($startid, $endid); } +sub _connection_options { + my $options = { + 'AutoCommit' => 1, + 'RaiseError' => 0, + 'PrintError' => 0, + }; + + if ( $LJ::IS_DEV_SERVER ) { + $options->{'RaiseError'} = 1; + } + else { + $options->{'PrintError'} = 1; + } + + return { 'connection_opts' => $options }; +} + sub dbh_by_role { - return $LJ::DBIRole->get_dbh( @_ ); + return $LJ::DBIRole->get_dbh( _connection_options(), @_ ); } sub dbh_by_name { @@ -147,13 +164,13 @@ my $fdsn = $dbh->selectrow_array("SELECT fdsn FROM dbinfo WHERE name=?", undef, $name); die "No fdsn found for db name '$name'\n" unless $fdsn; - return $LJ::DBIRole->get_dbh_conn($fdsn); + return $LJ::DBIRole->get_dbh_conn( _connection_options(), $fdsn ); } sub dbh_by_fdsn { my $fdsn = shift; - return $LJ::DBIRole->get_dbh_conn($fdsn); + return $LJ::DBIRole->get_dbh_conn( _connection_options(), $fdsn ); } sub root_dbh_by_name { @@ -164,7 +181,7 @@ my $fdsn = $dbh->selectrow_array("SELECT rootfdsn FROM dbinfo WHERE name=?", undef, $name); die "No rootfdsn found for db name '$name'\n" unless $fdsn; - return $LJ::DBIRole->get_dbh_conn($fdsn); + return $LJ::DBIRole->get_dbh_conn( _connection_options(), $fdsn ); } sub backup_in_progress { @@ -401,10 +418,9 @@ # returns: A dbh. # </LJFUNC> sub get_dbirole_dbh { - my $dbh = $LJ::DBIRole->get_dbh( @_ ) or return undef; + my $dbh = $LJ::DBIRole->get_dbh( LJ::DB::_connection_options(), @_ ) + or return undef; - $dbh->{'RaiseError'} = 1 if $LJ::IS_DEV_SERVER; - if ( $LJ::DB_LOG_HOST && $LJ::HAVE_DBI_PROFILE ) { $LJ::DB_REPORT_HANDLES{ $dbh->{Name} } = $dbh;