[Dbix-class] Strange statistically significant failure for DBIC with Sybase

Phillip Moore w.phillip.moore at gmail.com
Tue Feb 4 17:33:04 GMT 2014


Awesome -- that's 3 things to try and follow up on.   I just traced the
entire script, and the output is useless, since it's parallelized.
Everything's interweaved, and it's impossible to associate sets of systems
calls together.

Lemme see how far this gets me.  Thanks again!!


On Tue, Feb 4, 2014 at 12:30 PM, Peter Rabbitson <rabbit+dbic at rabbit.us>wrote:

> On Tue, Feb 04, 2014 at 12:19:48PM -0500, Phillip Moore wrote:
> > OK, that must have gone right over my head, 'cause I did read it, but I
> > don't see why that means I should expect there to be no trace output.
> >
> > How do you trace the SQL that is generated when the create() method is
> > called then?
>
> Several ways:
>
> You either preclude DBIC from using an extra connection (by wrapping
> your create in a transaction, which will have little effect over Sybase,
> but will offer a clue to DBIC to do something else, see second code I
> linked)
>
> Or you reach into the storage that holds the secondary connection (deep
> internals, do not use in production):
> $schema->storage->_writer_storage->_dbh->...
>
> > Obviously, I'm just turning on tracing on the connection
> > associated with my $dbh, but if that secondary connection isn't exposed
> to
> > me somehow, are you saying my only recourse is to trace the ENTIRE
> > application execution, and then wade through the mountain of data?
>
> That's the last option yes, but the above is easier.
>
> >
> > Oh, BTW, I tried switching to using NoBindVars, and was immediately
> > reminded of why that failed for me last year:
> >
> > DBIx::Class::Storage::DBI::_dbh_execute(): DBI Exception: DBD::Sybase::st
> > execute failed: Server message number=257 severity=16 state=1 line=1 \
> > server=NYTIBV6T228 text=Implicit conversion from datatype 'VARCHAR' to
> > 'NUMERIC' is not allowed.  Use the CONVERT function to run this query.
> >  Server message number=257 severity=16 state=1 line=1 server=NYTIBV6T228
> > text=Implicit conversion from datatype 'VARCHAR' to 'NUMERIC' is not a\
> > llowed.  Use the CONVERT function to run this query.
> >   [for Statement "INSERT INTO [ENGN_afsvolume] ( [name], [target],
> > [toplevel], [type]) VALUES ( 'canon.root', '9', '1', 'cn' )
> > SELECT @@IDENTITY"] at ./util/vms_bootstrap_database line 253
> >
> > That '9', and '1' are both foreign keys which are numerics, and the
> > dataserver doesn't like them to be quoted.
> >
>
> You do not have sufficient metadata on the 'target' and 'toplevel'
> columns. If you add data_type => $whateverthetypeis_likely_int to your
> add_columns hashref - DBIC will stop quoting:
>
> https://metacpan.org/source/RIBASUSHI/DBIx-Class-0.08270/lib/DBIx/Class/Storage/DBI/Sybase/ASE/NoBindVars.pm#L28
>
> Cheers
>
>
> _______________________________________________
> List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
> IRC: irc.perl.org#dbix-class
> SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
> Searchable Archive:
> http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.scsys.co.uk/pipermail/dbix-class/attachments/20140204/8fadce73/attachment.htm>


More information about the DBIx-Class mailing list