Koha staff interface doesn't complain when there is an SQL error, except in the logs. That can result in strange situations, where the user don't see there is a problem, even if there is. There is an easy solution to this problem : RaiseError in C4/Context.pm, the line my $dbh= DBI->connect("DBI:$db_driver:dbname=$db_name;host=$db_host;port=$db_port", $db_user, $db_passwd) or die $DBI::errstr; just has to be replaced by my $dbh= DBI->connect("DBI:$db_driver:dbname=$db_name;host=$db_host;port=$db_port", $db_user, $db_passwd, {RaiseError => 1}) or die $DBI::errstr; We also could deal with the DebugLevel systempreference to raise the error only if the library has set it. Something like: {'RaiseError' => C4::Context->preference("DebugLevel")?1:0} My preference goes to the 2nd option = raise error only if DebugLevel is set
silly me (& ian) : ->preference needs a db handler, that is not still open, so it calls new_dbh, that need ->preference ... => forever loop => boom ! We will have to use DEBUG pragma (in koha-httpd.conf) Patch coming soon !
Created attachment 6238 [details] [review] Bug 7184 raise mySQL error if debug is set Before this patch, if a mySQL occured in Koha (any error), then the user was seeing nothing. With this patch, if DEBUG is set in Koha VirtualHost, any mySQL error will make Koha die and display the SQL error Step to test: === BEFORE PATCH === go anywhere, and change a mySQL statement to make it invalid. Launch a page using the SQL you've made wrong, you'll see nothing, except you won't see the expected results === AFTER PATCH === Modify koha-httpd.conf, and add the following line, in the virtualhost (if it does not already exist) SetEnv DEBUG 1 restart/reload Apache Launch the same page, you'll get a Perl statement saying something like: DBD::mysql::st execute failed: <<blablabla SQL error>> at <<where the error was raised line <<error line>>
Simple patch, implements more feedback information using the Environment variable instead of the system preference. Followup will become necessary: modify etc/koha-httpd.conf to include default values for the DEBUG environment variable. The choice of this default value should be consistent with the level of debugging already defaulted to in Koha with the syspref. This will come in very handy whenever atomic update files are not applied along with their companion code; a missing column or system preference value will become very clear very quickly. Marking as Passed QA
patch pushed, please test.
QMaint: I think this patch should be kept for 3.8: if it's activated on 3.6, there may be unexpected errors. I'll propose on koha-devel to have all tester setting DEBUG to 1, but I think it should not be done for 3.6 yet.
There have been no further reports of problems so I am marking this bug resolved.