From 987d9bd1104aa77d02e3051c7e71eef3f7910842 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 Signed-off-by: Chris Cormack --- C4/Context.pm | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/C4/Context.pm b/C4/Context.pm index e94976064f..3fb4ae9652 100644 --- a/C4/Context.pm +++ b/C4/Context.pm @@ -755,8 +755,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