From 197dd2d4c7473b81fe18ff32bb0fdde0f13a94a0 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: Katrin Fischer Signed-off-by: Tomas Cohen Arazi Signed-off-by: Jonathan Druart (cherry picked from commit 1d1d6ddc9d1e4929d9eb232e0745bcf31749cfdb) Signed-off-by: Fridolin Somers --- about.pl | 30 ++++++++++++++-- .../intranet-tmpl/prog/en/modules/about.tt | 34 ++++++++++++++++++- 2 files changed, 61 insertions(+), 3 deletions(-) diff --git a/about.pl b/about.pl index ef91b249bf..fed0092fc7 100755 --- a/about.pl +++ b/about.pl @@ -284,10 +284,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 eaabe03dd9..6d10c48f01 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/about.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/about.tt @@ -130,13 +130,45 @@
- [% IF warnPrefBiblioAddsAuthorities || warnPrefEasyAnalyticalRecords || warnPrefAnonymousPatron || warnPrefAnonymousPatron_PatronDoesNotExist || warnNoActiveCurrency || QueryParserError || warnIsRootUser || xml_config_warnings.size || AutoSelfCheckPatronDoesNotHaveSelfCheckPerm || AutoSelfCheckPatronHasTooManyPerm || warnStatisticsFieldsError || warnNoTemplateCaching %] + [% IF warnPrefBiblioAddsAuthorities || warnPrefEasyAnalyticalRecords || warnPrefAnonymousPatron || warnPrefAnonymousPatron_PatronDoesNotExist || 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.39.5