NAME

   DBIx::Class::ParseError - Extensible database error handler

SYNOPSIS

   From:

       DBIx::Class::Storage::DBI::_dbh_execute(): DBI Exception: DBD::mysql::st execute failed: Duplicate entry \'1\' for key \'PRIMARY\' [for Statement "INSERT INTO foo ( bar_id, id, is_foo, name) VALUES ( ?, ?, ?, ? )" with ParamValues: 0=1, 1=1, 2=1, 3=\'Foo1571434801\'] at ...

   To:

       use Data::Dumper;
       my $parser = DBIx::Class::ParseError->new(schema => $dbic_schema);
       print Dumper( $parser->process($error) );

       # bless({
       #    'table' => 'foo',
       #    'columns' => [
       #        'id'
       #    ],
       #    'message' => 'DBIx::Class::Storage::DBI::_dbh_execute(): DBI Exception: DBD::mysql::st execute failed: Duplicate entry \'1\' for key \'PRIMARY\' [for Statement "INSERT INTO foo ( bar_id, id, is_foo, name) VALUES ( ?, ?, ?, ? )" with ParamValues: 0=1, 1=1, 2=1, 3=\'Foo1571434801\'] at ...',
       #    'operation' => 'insert',
       #    'column_data' => {
       #        'name' => 'Foo1571434801',
       #        'bar_id' => '1',
       #        'id' => '1',
       #        'is_foo' => '1'
       #    },
       #    'source_name' => 'Foo',
       #    'type' => 'primary_key'
       # }, 'DBIx::Class::ParseError::Error' );

DESCRIPTION

   This a tool to extend DB errors from DBIx::Class (basically, database
   error strings wrapped into a DBIx::Class::Exception obj) into an API to
   provide useful details of the error, allowing app's business layer or
   helper scripts interfacing with database models to instrospect and
   better handle errors from multiple DBMS.

ERROR CASES

   This is a non-exausted list of common errors which should be handled by
   this tool:

   primary key

   foreign key(s)

   unique key(s)

   not null column(s)

   data type

   missing column

   missing table

DRIVERS

   Initial fully support for errors from the following DBMS:

   SQLite

     See DBIx::Class::ParseError::Parser::SQLite.

   MySQL

     See DBIx::Class::ParseError::Parser::MySQL.

AUTHOR

   wreis - Wallace reis <[email protected]>

COPYRIGHT

   Copyright (c) the "AUTHOR" and "CONTRIBUTORS" as listed above.

LICENSE

   This library is free software and may be distributed under the same
   terms as perl itself.

SPONSORSHIP

   This module exists due to the wonderful people at IntelliTree Solutions
   http://www.intellitree.com.