From 1c3dd8822aa800831e9767542028e5f2a6a99530 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Wed, 12 Jul 2017 15:52:19 -0300 Subject: [PATCH] Bug 18931: Add a "data corrupted" section on the about page - MySQL AI See the following wiki page for more information https://wiki.koha-community.org/wiki/DBMS_auto_increment_fix Test plan: Create (at least) a patron, a checkout, a biblio and a hold Then fill the old_* or deleted* tables with: INSERT INTO deletedborrowers SELECT * from borrowers WHERE borrowernumber=XXX; INSERT INTO deletedbiblio SELECT * from biblio WHERE biblionumber=XXX; INSERT INTO old_issues SELECT * from issues WHERE issue_id=XXX; INSERT INTO old_reserves SELECT * from reserves WHERE reserve_id=XXX; Go to the about page, 'System information' tab. You should see a new "Data problems" section with the list of the ids that are wrong Signed-off-by: Kyle M Hall --- about.pl | 30 +++++++++++++++++++-- koha-tmpl/intranet-tmpl/prog/en/modules/about.tt | 34 +++++++++++++++++++++++- 2 files changed, 61 insertions(+), 3 deletions(-) diff --git a/about.pl b/about.pl index af5544c..4ed9c0e 100755 --- a/about.pl +++ b/about.pl @@ -255,10 +255,36 @@ if ( C4::Context->preference('WebBasedSelfCheck') AutoSelfCheckPatronDoesNotHaveSelfCheckPerm => not ( $has_self_checkout_perm ), AutoSelfCheckPatronHasTooManyPerm => $has_other_permissions, ); - - } +{ + my $dbh = C4::Context->dbh; + my $patrons = $dbh->selectall_arrayref( + q|select b.borrowernumber from borrowers b join deletedborrowers db on b.borrowernumber=db.borrowernumber|, + { Slice => {} } + ); + my $biblios = $dbh->selectall_arrayref( + q|select b.biblionumber from biblio b join deletedbiblio db on b.biblionumber=db.biblionumber|, + { Slice => {} } + ); + my $checkouts = $dbh->selectall_arrayref( + q|select i.issue_id from issues i join old_issues oi on i.issue_id=oi.issue_id|, + { Slice => {} } + ); + my $holds = $dbh->selectall_arrayref( + q|select r.reserve_id from reserves r join old_reserves o on r.reserve_id=o.reserve_id|, + { Slice => {} } + ); + if ( @$patrons or @$biblios or @$checkouts or @$holds ) { + $template->param( + has_ai_issues => 1, + ai_patrons => $patrons, + ai_biblios => $biblios, + ai_checkouts => $checkouts, + ai_holds => $holds, + ); + } +} my %versions = C4::Context::get_versions(); $template->param( diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/about.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/about.tt index 8201529..7412715 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/about.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/about.tt @@ -104,13 +104,45 @@
[% IF warnPrefBiblioAddsAuthorities || warnPrefEasyAnalyticalRecords || warnPrefAnonymousPatron || warnPrefAnonymousPatron_PatronDoesNotExist || - warnNoActiveCurrency || QueryParserError || warnIsRootUser || xml_config_warnings.size || AutoSelfCheckPatronDoesNotHaveSelfCheckPerm || AutoSelfCheckPatronHasTooManyPerm || warnStatisticsFieldsError || warnNoTemplateCaching %] + warnNoActiveCurrency || QueryParserError || warnIsRootUser || xml_config_warnings.size || AutoSelfCheckPatronDoesNotHaveSelfCheckPerm || AutoSelfCheckPatronHasTooManyPerm || warnStatisticsFieldsError || warnNoTemplateCaching || has_ai_issues %] [% IF (warnIsRootUser) %]

Warning regarding current user

You are logged in as the database administrative user. This is not recommended because some parts of Koha will not function as expected when using this account.

Please log in instead with a regular staff account. To create a staff account, create a library, a patron category 'Staff' and add a new patron. Then give this patron permissions from 'More' in the toolbar.

[% END %] + [% IF has_ai_issues %] +

Data problems

+

+ The following tables have problems with their auto_increment values which may lead to data lost. You should not ignore this warning. + The problem is that innodb does not keep auto_increment across SQL server restarts (it is only set in memory). + So on server startup the auto_increment values are set to max(table.id)+1. +

+

+ See the related wiki page to know how to avoid this problem. +

+ [% IF ai_patrons %] +

Patrons

+ The following ids exist in both the borrowers and deletedborrowers table: + [% FOR p IN ai_patrons %][% p.borrowernumber %][% UNLESS loop.last %], [% END %][% END %] + [% END %] + [% IF ai_biblios %] +

Biblios

+ The following ids exist in both the biblio and deletedbiblio table: + [% FOR b IN ai_biblios %][% b.biblionumber %][% UNLESS loop.last %], [% END %][% END %] + [% END %] + [% IF ai_checkouts %] +

Checkouts

+ The following ids exist in both the issues and old_issues table: + [% FOR c IN ai_checkouts %][% c.issue_id %][% UNLESS loop.last %], [% END %][% END %] + [% END %] + [% IF ai_holds %] +

Holds

+ The following ids exist in both the holds and old_reserves table: + [% FOR h IN ai_holds %][% h.issue_id %][% UNLESS loop.last %], [% END %][% END %] + [% END %] + [% END %] + [% IF warnPrefBiblioAddsAuthorities || warnPrefEasyAnalyticalRecords || warnPrefAnonymousPatron || warnPrefAnonymousPatron_PatronDoesNotExist || warnNoActiveCurrency || QueryParserError || AutoSelfCheckPatronDoesNotHaveSelfCheckPerm || AutoSelfCheckPatronHasTooManyPerm || warnStatisticsFieldsError || warnNoTemplateCaching %]

Warnings regarding the system configuration

-- 2.10.2