[Dbix-class] Duplicate entry error on create

Dermot paikkos at googlemail.com
Wed Dec 9 17:16:31 GMT 2009


2009/12/9 Eden Cardim <edencardim at gmail.com>:
>>>>>> "Dermot" == Dermot  <paikkos at googlemail.com> writes:
>
>    Dermot> Hi, I am getting the following error when I attempt to
>    Dermot> create a record.
>
>    Dermot> DBD::mysql::st execute failed: Duplicate entry '0' for key 3
>    Dermot> [for Statement "INSERT INTO products ( distribution,
>    Dermot> caption, contributor_id, ...) VALUES(( ?, ?, ?, ?, ?, ?, ?,
>    Dermot> ?, ?, ?, ? )" with ParamValues: 0='1', 1='Earth', 2='3'....)
>
>    Dermot> Is 'key 3' referring to 'the 3rd item in the INSERT list
>    Dermot> (contributor_id)?
>
> No, that's a mysql error, you're probably violating a constraint on your
> table with those values.

Yes. I was hoping I could find out what 'key 3' was referring to.

>
> No, you're just doing it wrong, try:
>
> my $row = $schema->resultset('Products')->find_or_create(
>    {
>        distribution => 1,
>        caption      => 'Earth',
>        contributor  => { code => $var, name => $name }
>    }
> );

Oh! Should I be using the name of the accessor_name from the belongs_to?

Dp.



More information about the DBIx-Class mailing list