Jonathan,

I've updated bug 18651 with my (possibly incomplete) interpretation of some
research that Nick has done on the root causes of this error.


On Mon, May 22, 2017 at 1:39 PM, Jonathan Druart <
jonathan.dru...@bugs.koha-community.org> wrote:

> I did not follow everything in your manipulations, but there is definitely
> a bug.
> I have opened bug 18651 to try and fix it.
>
>
> On Mon, 22 May 2017 at 13:49 Lennon Mazonde <lmmazo...@gmail.com> wrote:
>
> > Hi Nick,
> >
> > Just out of interest's sake, i changed the increment value in
> > /usr/share/koha/lib/C4/Circulation.pm on line 2178 from +1 to a random
> > number +1111.
> >
> > This resulted in a successful check-in and the next old_issue_id that
> > was generated increased by +1111.
> >
> > I reverted the increment value in Circulation.pm to +1 and subsequent
> > check-ins are (for now) processing successfully. I'm sure i shouldn't
> > temper with those files, but it's given my client another bone to chew
> > while I try and sort out the problem.
> >
> > Regards,
> >
> > Lennon
> >
> > On 22/05/2017 16:34, Nick Clemens wrote:
> > > Hi Lennon,
> > >
> > > The auto_increment will need to be increased and those duplicated IDs
> > > as well.
> > >
> > > Trying to clarify the error below
> > >
> > > The error seems to stem from a situation where there are greater
> > > issues.issue_id's than old_issues.issue_id
> > >
> > > For a scenario:
> > > Old issues has: 1,2,3,4,5,9,10
> > > Issues has: 6,7,8 (auto_increment 11)
> > > SERVER RESTARTED
> > > Old issues unchanged
> > > Issues has: 6,7,8 (auto_increment 9)
> > >
> > > Actions:
> > > Issues 9, 10, 11, 12 created
> > > checkin issue 9 - found in old_issues, try increasing to 11 - but
> > > issues 11 exists - checkin fails
> > >
> > > Talking with Jonathan and Kyle, we face another problem in that
> > > accountlines are now linked to issue_id - so altering one breaks the
> > > connection. This scenario is rare at least but must be handled.
> > >
> > >
> > > On Mon, May 22, 2017 at 10:15 AM Lennon Mazonde <lmmazo...@gmail.com
> > > <mailto:lmmazo...@gmail.com>> wrote:
> > >
> > >     Hi Nick,
> > >
> > >     Thanks for responding.
> > >
> > >>     Try: SELECT issue_id FROM issues JOIN old_issues USING (issue_id)
> > >
> > >     Running the above produced about 91 rows of overlapping values:
> > >
> > >>     mysql> SELECT issue_id FROM issues JOIN old_issues USING
> (issue_id);
> > >>     +----------+
> > >>     | issue_id |
> > >>     +----------+
> > >>     |    14374 |
> > >>     |    14424 |
> > >>     |    14372 |
> > >>     |    14369 |
> > >>     |    14617 |
> > >>     |    14391 |
> > >>     |    14383 |
> > >>     |    14381 |
> > >     and so on...
> > >
> > >
> > >>     You can then alter those ids but pushing them up and bump the
> > >>     auto_increment for the table above the MAX(issue_id) FROM
> > old_issues.
> > >>
> > >     I'll increase the auto increment and let you know if that solves
> > >     the issue.
> > >
> > >
> > >>     A similar problem can occur in the reserves/old_reserves tables
> > >>
> > >     I  checked the reserves/old_reserves tables, there no duplicate
> > >     reserve_ids there.
> > >
> > >     Regards,
> > >
> > >     Lennon
> > >
> > >>
> > >>
> > >>     On Mon, May 22, 2017 at 6:00 AM Lennon Mazonde
> > >>     <lmmazo...@gmail.com <mailto:lmmazo...@gmail.com>> wrote:
> > >>
> > >>         Hi Everyone,
> > >>
> > >>         I'm running Koha 16.11.07, installed via packages, on Ubuntu
> > >>         14.04.
> > >>         Recently, one of my clients started having circulation
> > >>         problems with
> > >>         their Koha system. Items that have been checked in are still
> > >>         appearing
> > >>         in the patron's account. This has been happening randomly to
> > >>         different
> > >>         patrons at different times using different items. There is no
> > >>         consistent
> > >>         traceable pattern, and there are no errors showing
> client-side.
> > >>
> > >>         When i checked the Koha intranet logs, the following errors
> > >>         came up:
> > >>
> > >>                  [Mon May 22 07:04:15.958812 2017] [cgi:error] [pid
> > 6424]
> > >>         [client 154.120.230.62:27062 <http://154.120.230.62:27062>]
> > >>         AH01215: [Mon May 22 07:04:15 2017]
> > >>         returns.pl <http://returns.pl>: DBD::mysql::db do failed:
> > >>         Duplicate entry '14846' for key
> > >>         'PRIMARY' [for Statement "UPDATE issues SET issue_id = ?
> > >>         WHERE issue_id
> > >>         = ?"] at /usr/share/koha/lib/C4/Circulation.pm line 2179.,
> > >>         referer:
> > >>         http://aby.com/cgi-bin/koha/circ/returns.pl
> > >>                  [Mon May 22 07:08:57.501919 2017] [cgi:error] [pid
> > 6879]
> > >>         [client 154.120.230.62:31881 <http://154.120.230.62:31881>]
> > >>         AH01215: [Mon May 22 07:08:57 2017]
> > >>         returns.pl <http://returns.pl>: DBD::mysql::db do failed:
> > >>         Duplicate entry '14847' for key
> > >>         'PRIMARY' [for Statement "UPDATE issues SET issue_id = ?
> > >>         WHERE issue_id
> > >>         = ?"] at /usr/share/koha/lib/C4/Circulation.pm line 2179.,
> > >>         referer:
> > >>         http://aby.com/cgi-bin/koha/circ/circulation.pl
> > >>                  [Mon May 22 08:56:10.808209 2017] [cgi:error] [pid
> > >>         20939]
> > >>         [client 154.120.230.62:43475 <http://154.120.230.62:43475>]
> > >>         AH01215:
> > >>                  [Mon May 22 08:56:10 2017] returns.pl
> > >>         <http://returns.pl>: DBD::mysql::db do
> > >>         failed: Duplicate entry '14848' for key 'PRIMARY' [for
> > >>         Statement "UPDATE
> > >>         issues SET issue_id = ? WHERE issue_id = ?"] at
> > >>         /usr/share/koha/lib/C4/Circulation.pm line 2179., referer:
> > >>         http://aby.com/cgi-bin/koha/circ/returns.pl
> > >>                  [Mon May 22 08:56:17.116111 2017] [cgi:error] [pid
> > >>         20939]
> > >>         [client 154.120.230.62:43475 <http://154.120.230.62:43475>]
> > >>         AH01215: [Mon May 22 08:56:17 2017]
> > >>         returns.pl <http://returns.pl>: DBD::mysql::db do failed:
> > >>         Duplicate entry '14849' for key
> > >>         'PRIMARY' [for Statement "UPDATE issues SET issue_id = ?
> > >>         WHERE issue_id
> > >>         = ?"] at /usr/share/koha/lib/C4/Circulation.pm line 2179.,
> > >>         referer:
> > >>         http://aby.com/cgi-bin/koha/circ/returns.pl
> > >>                  [Mon May 22 08:56:22.893948 2017] [cgi:error] [pid
> > >>         20939]
> > >>         [client 154.120.230.62:43475 <http://154.120.230.62:43475>]
> > >>         AH01215: [Mon May 22 08:56:22 2017]
> > >>         returns.pl <http://returns.pl>: DBD::mysql::db do failed:
> > >>         Duplicate entry '14850' for key
> > >>         'PRIMARY' [for Statement "UPDATE issues SET issue_id = ?
> > >>         WHERE issue_id
> > >>         = ?"] at /usr/share/koha/lib/C4/Circulation.pm line 2179.,
> > >>         referer:
> > >>         http://aby.com/cgi-bin/koha/circ/returns.pl
> > >>                  [Mon May 22 08:59:21.098733 2017] [cgi:error] [pid
> > >>         21279]
> > >>         [client 154.120.230.62:44454 <http://154.120.230.62:44454>]
> > >>         AH01215:
> > >>                  [Mon May 22 08:59:21 2017] circulation.pl
> > >>         <http://circulation.pl>: DBD::mysql::db do
> > >>         failed: Duplicate entry '14851' for key 'PRIMARY' [for
> > >>         Statement "UPDATE
> > >>         issues SET issue_id = ? WHERE issue_id = ?"] at
> > >>         /usr/share/koha/lib/C4/Circulation.pm line 2179., referer:
> > >>         http://aby.com/cgi-bin/koha/circ/circulation.pl
> > >>                  [Mon May 22 09:08:18.138124 2017] [cgi:error] [pid
> > >>         22448]
> > >>         [client 154.120.230.62:48991 <http://154.120.230.62:48991>]
> > >>         AH01215:
> > >>                  [Mon May 22 09:08:18 2017] circulation.pl
> > >>         <http://circulation.pl>:
> > >>         DBIx::Class::Storage::DBI::select_single(): Query returned
> > >>         more than one
> > >>         row. SQL that returns multiple rows is DEPRECATED for ->find
> and
> > >>         ->single at /usr/share/koha/lib/Koha/Objects.pm line 83,
> > referer:
> > >>         http://aby.com/cgi-bin/koha/circ/circulation.pl
> > >>
> > >>          From the little that i understand, the duplicate entry is
> > >>         occurring
> > >>         because that table has reached the upper limit of the
> > >>         auto-increment
> > >>         field (see the first comment in this thread). Therefore,
> > >>         when  a new
> > >>         record is inserted into the table, instead of generating a
> > >>         unique value,
> > >>         it is producing a duplicate key entry.
> > >>
> > >>         What i think this then does on the client side is that when
> > >>         an item is
> > >>         checked in, instead of a new unique value being created for
> that
> > >>         particular transaction in the issue/old_issue fields, a
> > >>         duplicate value
> > >>         is generated and assigned to that check-in. The system then
> > >>         thinks that
> > >>         the item has already been checked in, since the supposedly
> > >>         unique value
> > >>         has been generated. The item will then continue showing in
> > >>         the patron's
> > >>         account, even though it's been checked in.
> > >>
> > >>         Am i correct in my assessment of what is happening?
> > >>
> > >>         I opened the module that was generating that error
> > >>
> > >>                  sudo nano -Bu +2179
> > >>         /usr/share/koha/lib/C4/Circulation.pm
> > >>
> > >>         The lines of code in the section around line 2179 deal with
> > >>         two tables
> > >>         in particular, issues and old_issues;
> > >>
> > >>                  # FIXME Improve the return value and handle it from
> > >>         callers
> > >>                  $schema->txn_do(sub {
> > >>                  $dbh->do( $query, undef, @bind );
> > >>                  my $id_already_exists = $dbh->selectrow_array(
> > >>                  q|SELECT COUNT(*) FROM old_issues WHERE issue_id =
> ?|,
> > >>                  undef, $issue_id
> > >>                  );
> > >>                  if ( $id_already_exists ) {
> > >>                  my $new_issue_id = $dbh->selectrow_array(q|SELECT
> > >>         MAX(issue_id)+1 FROM old_issues|);
> > >>                  $dbh->do(
> > >>                  q|UPDATE issues SET issue_id = ? WHERE issue_id = ?|,
> > >>                  undef, $new_issue_id, $issue_id
> > >>                  );
> > >>                  $issue_id = $new_issue_id;
> > >>                  }
> > >>                  $dbh->do(q|INSERT INTO old_issues SELECT * FROM
> > >>         issues WHERE
> > >>         issue_id = ?|, undef, $issue_id);
> > >>
> > >>         I assumed the problems with the duplicate keys are emanating
> > >>         from these
> > >>         two tables. I tried increasing the index field of the column
> > >>         "issue_id"
> > >>         in both the old_issues and issues tables from INT to BIGINT
> > >>         (in the
> > >>         hopes of increasing the maximum limit of unique keys being
> > >>         generated) by
> > >>         doing the following in MySQL:
> > >>
> > >>                  mysql> use koha;
> > >>                  mysql> describe old_issues;
> > >>                  mysql> ALTER TABLE old_issues MODIFY issue_id BIGINT
> > >>         UNSIGNED
> > >>         NOT NULL AUTO_INCREMENT;
> > >>                  mysql> describe issues;
> > >>                  mysql> ALTER TABLE issues MODIFY issue_id BIGINT
> > >>         UNSIGNED NOT
> > >>         NULL AUTO_INCREMENT;
> > >>
> > >>         However, the problem is still occurring. Can anyone help with
> an
> > >>         explanation of what is happening and why, and how i can fix
> > >>         it? For now,
> > >>         i'm just going to reinstall my client's database, but i don't
> > >>         think
> > >>         that's going to be a permanent fix since the problem is
> > >>         likely to recur.
> > >>
> > >>         Regards,
> > >>
> > >>         Lennon Mazonde
> > >>
> > >>         _______________________________________________
> > >>         Koha mailing list http://koha-community.org
> > >>         Koha@lists.katipo.co.nz <mailto:Koha@lists.katipo.co.nz>
> > >>         https://lists.katipo.co.nz/mailman/listinfo/koha
> > >>
> > >
> >
> >
> > _______________________________________________
> > Koha mailing list  http://koha-community.org
> > Koha@lists.katipo.co.nz
> > https://lists.katipo.co.nz/mailman/listinfo/koha
> >
> _______________________________________________
> Koha mailing list  http://koha-community.org
> Koha@lists.katipo.co.nz
> https://lists.katipo.co.nz/mailman/listinfo/koha
>
_______________________________________________
Koha mailing list  http://koha-community.org
Koha@lists.katipo.co.nz
https://lists.katipo.co.nz/mailman/listinfo/koha

Reply via email to