[rt-users] Followup: trouble with creating a new ticket

Jesse Vincent jesse at bestpractical.com
Fri Nov 9 13:17:33 EST 2001


On Fri, Nov 09, 2001 at 07:07:46PM +0100, Piet Honkoop wrote:
> On Fri, 9 Nov 2001, Jesse Vincent wrote:
> 
> >
> > What rev of DBD::mysql do you have installed? there was a bug in some earlier
> > versions that caused it to fail sort of badly when asked for insert_id.
> >
> 
> DBD-mysql-2.1003


Ok. I've actually seen this bug when some versions of mysql's libs aren't matched properly to the mysql DBD.  FWIW, that version of DBD::mysql is the 
beta that you shouldn't be using in production...

ftp://ftp.funet.fi/pub/languages/perl/CPAN/authors/id/JWIED/Msql-Mysql-modules-1.2219.tar.gz   is the current production driver.


> 
> > Also, I'd love to see your patch presented as a unified diff. It would be much
> > easier for me to eyeball ;)
> >
> 
> Mwah ;) it doesn't deserve the term patch I'm afraid... But:
> 
> --- /usr/local/share/cpan/build/DBIx-SearchBuilder-0.47/SearchBuilder/Handle/mysql.pm   Fri Nov  9 19:01:41 2001
> +++ /usr/local/lib/perl5/site_perl/5.005/DBIx/SearchBuilder/Handle/mysql.pm    Fri Nov  9 10:59:16 2001
> @@ -44,17 +44,18 @@
>                 die "Error with Insert: ". $self->dbh->errstr;
>        }
>         else {
> -           return (undef);
> +               warn "Error with Insert: ". $self->dbh->errstr;
> +           #return (undef);
>         }
>       }
> 
> -    $self->{'id'}=$self->dbh->{'mysql_insertid'};
> +    #$self->{'id'}=$self->dbh->{'mysql_insertid'};
>      # Yay. we get to work around mysql_insertid being null some of the time :/
> 
> -    unless ($self->{'id'}) {
> +    # unless ($self->{'id'}) {
>         $self->{'id'} =  $self->FetchResult('SELECT LAST_INSERT_ID()');
> -    }
> -    warn "$self no row id returned on row creation" unless ($self->{'id'});
> +    #}
> +    warn "$self no row id returned on row creation" unless ($self->{'id'}) ;
>      return( $self->{'id'}); #Add Succeded. return the id
>    }
> 
> 
> 
> As you can see, no coding, just chopping away; too many tests before we
> get to the point. The id returned originally went negative (unsigned near
> the limit). Now I don't know whether this is a problem in mysql or in the
> DBD/DBIx combination, but still. It cost me a good few days to get to the
> point where I could fix it and start testing ...
> 
> 
> Thanks & good luck!
> 
> Piet
> 
> 
> >
> > 	Thanks very much,
> > 	Jesse
> >
> >
> > On Fri, Nov 09, 2001 at 01:22:35PM +0100, Piet Honkoop wrote:
> > >
> > > As reported earlier, I had problems with setting up rt 2.0.8_02
> > >
> > > Relevant software:
> > > FreeBSD 4.4-stable
> > > Mysql: 3.23.43
> > > RT: 2.0.8_02
> > > DBIx::SearchBuilder 0.47
> > > mod_perl 1.26
> > >
> > > What I found out in the end was that for some reason the id field was not
> > > treated correctly. Below is an excerpt from the mysql log where it tries
> > > to insert a ticket. The ticket gets created all right but the
> > > last_insert_id from mysql is never picked up.
> > >
> > > Coming from the mysql log:
> > >
> > >                      34 Query       INSERT INTO Tickets (Starts, Type,
> > > Priority, Status, Queue, Owner, InitialPriority, FinalPriority, Subject,
> > > Creator, LastUpdatedBy, Created, TimeLeft, TimeWorked, LastUpdated, Due)
> > > VALUES ('2001-11-09 09:41:53', 'ticket', '0', 'new', '1', '2', '0', '0',
> > > 'g1', '3', '3', '2001-11-09 09:41:53', '', '', '2001-11-09 09:41:53',
> > > '2001-11-09 09:41:53')
> > >                      34 Query       SELECT  * FROM Tickets WHERE id =
> > > '4294967330'
> > >                      34 Query       UPDATE Tickets SET
> > > EffectiveId='4294967330' WHERE id=NULL
> > >
> > >
> > > After an extensive search (I can find my way around in perl code, but
> > > that's about it...), I found:
> > >
> > > DBIx/SearchBuilder/Handle/mysql.pm
> > >
> > > The following changes made:
> > >
> > > 47c47,48
> > > <           return (undef);
> > > ---
> > > >               warn "Error with Insert: ". $self->dbh->errstr;
> > > >           #return (undef);
> > > 51c52
> > > <     $self->{'id'}=$self->dbh->{'mysql_insertid'};
> > > ---
> > > >     #$self->{'id'}=$self->dbh->{'mysql_insertid'};
> > > 54c55
> > > <     unless ($self->{'id'}) {
> > > ---
> > > >     # unless ($self->{'id'}) {
> > > 56,57c57,58
> > > <     }
> > > <     warn "$self no row id returned on row creation" unless
> > > ($self->{'id'});
> > > ---
> > > >     #}
> > > >     warn "$self no row id returned on row creation" unless
> > > ($self->{'id'}) ;
> > >
> > > (admitted, this is the crude way). suppress the warning/return undef and
> > > force the darn thing to get the last_insert_id() after an insert...
> > >
> > > But once that was in place, I got the following result:
> > >
> > >              50 Query       INSERT INTO Tickets (Starts, Type, Priority,
> > > Status,
> > >  Queue, Owner, FinalPriority, InitialPriority, Subject, Creator,
> > > LastUpdatedBy,
> > > Created, TimeLeft, TimeWorked, LastUpdated, Due) VALUES ('2001-11-09
> > > 09:59:59',
> > > 'ticket', '0', 'new', '1', '2', '0', '0', 'blabla', '3', '3', '2001-11-09
> > > 09:59:
> > > 59', '', '', '2001-11-09 09:59:59', '2001-11-09 09:59:59')
> > >              50 Query       SELECT LAST_INSERT_ID()
> > >              50 Query       SELECT  * FROM Tickets WHERE id = '2'
> > >              50 Query       UPDATE Tickets SET EffectiveId='2' WHERE
> > > id='2'
> > >
> > > Now everything is working, but of course the origin of trouble lies
> > > elsewhere (otherwise nothing would have worked once it uses
> > > DBIx::SearchBuilder).
> > >
> > > Where should I start looking where to find the true origin of this
> > > problem?
> > >
> > > P.
> > >
> > >
> > > --
> > >
> > > =========================================================================
> > > Wirehub! Internet BV                                  tel. +31 10 2448344
> > > Westzeedijk 487                                       fax. +31 10 2448300
> > > 3024 EL Rotterdam                                  http://www.wirehub.net
> > >
> > >
> > >
> > >
> > > _______________________________________________
> > > rt-users mailing list
> > > rt-users at lists.fsck.com
> > > http://lists.fsck.com/mailman/listinfo/rt-users
> > >
> >
> >
> 
> -- 
> 
> =========================================================================
> Wirehub! Internet BV                                  tel. +31 10 2448344
> Westzeedijk 487                                       fax. +31 10 2448300
> 3024 EL Rotterdam                                  http://www.wirehub.net
> 
> 
> 

-- 
http://www.bestpractical.com/products/rt  -- Trouble Ticketing. Free.




More information about the rt-users mailing list