From cb6870d8d137611e37ccd1cade4e257072c20bed Mon Sep 17 00:00:00 2001 From: Chris Nighswonger Date: Wed, 14 Nov 2012 15:36:21 -0500 Subject: [PATCH] Bug 9085 - Installer will not run with DEBUG set This is due to raising all db errors combined with the fact that attempts to make selections from a non-existent systempreferences table raises db errors. The installer should run even with DEBUG set, otherwise dropping and recreating a development database becomes somewhat of a chore. This patch adds code to check for the existence of the systempreferece table. If the table exists, then RaiseError is enabled on the database handle. Otherwise it is disabled to allow the installer to run without throwing an error. Signed-off-by: Jared Camins-Esakov The installer can now be run both with and without DEBUG set. Signed-off-by: Paul Poulain Signed-off-by: Jared Camins-Esakov --- C4/Context.pm | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/C4/Context.pm b/C4/Context.pm index 7de3f9479c..bd1f2351d9 100644 --- a/C4/Context.pm +++ b/C4/Context.pm @@ -787,8 +787,23 @@ sub _new_dbh my $db_user = $context->config("user"); my $db_passwd = $context->config("pass"); # MJR added or die here, as we can't work without dbh - my $dbh= DBI->connect("DBI:$db_driver:dbname=$db_name;host=$db_host;port=$db_port", + my $dbh = DBI->connect("DBI:$db_driver:dbname=$db_name;host=$db_host;port=$db_port", $db_user, $db_passwd, {'RaiseError' => $ENV{DEBUG}?1:0 }) or die $DBI::errstr; + + # Check for the existence of a systempreference table; if we don't have this, we don't + # have a valid database and should not set RaiseError in order to allow the installer + # to run; installer will not run otherwise since we raise all db errors + + eval { + local $dbh->{PrintError} = 0; + local $dbh->{RaiseError} = 1; + $dbh->do(qq{SELECT * FROM systempreferences WHERE 1 = 0 }); + }; + + if ($@) { + $dbh->{RaiseError} = 0; + } + my $tz = $ENV{TZ}; if ( $db_driver eq 'mysql' ) { # Koha 3.0 is utf-8, so force utf8 communication between mySQL and koha, whatever the mysql default config. -- 2.39.5