Duplicate Key -- Have I missed something

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



    I have a production environment that is running the code that caused this problem about once every 30 seconds or so, with two clients.  It normally runs very well, but I was suddenly hit with a duplicate key violation for a table where the primary key is generated in part from sequence.

    How might this have happen? 

ERROR:  duplicate key violates unique constraint "game_pay_cash_coupon_trans_pkey"
CONTEXT:  SQL statement "INSERT INTO game_pay_cash_coupon_trans( ttype, lid, id, gpid, cash_paid, trans_user ) values( 'INSERT',  $1 ,  $2 ,  $3 ,  $4 ,  $5  )"
        PL/pgSQL function "game_pay_cash_coupon_add" line 7 at SQL statement
        SQL statement "SELECT  game_pay_cash_coupon_add(  $1 , gpk, cash_in_use ) FROM game_state_game gsg, game_state_cash_coupon gscc WHERE gsg.gid =  $2  AND gscc.gid =  $3 "
        PL/pgSQL function "game_state_complete_payment" line 13 at perform
        SQL statement "SELECT  game_state_complete_payment(  $1 ,  $2 )"
        PL/pgSQL function "game_state_game_complete" line 20 at perform
    
The offeded table

                                     Table "public.game_pay_cash_coupon_trans"
   Column   |               Type                |                            Modifiers                            
------------+-----------------------------------+------------------------------------------------------------------
toid       | d_location_id                     | not null default "location"()
tid        | d_trans_id                        | not null default nextval('game_pay_cash_coupon_trans_seq'::text)
ttype      | d_game_pay_cash_coupon_trans_type |
lid        | d_location_id                     |
id         | d_game_pay_cash_coupon_id         |
gpid       | d_game_play_id                    |
cash_paid  | d_money                           |
trans_user | d_user_name                       |
trans_time | d_timestamp                       |
Indexes:
    "game_pay_cash_coupon_trans_pkey" PRIMARY KEY, btree (toid, tid)
Triggers:
    trig_game_pay_cash_coupon_trans_aft_ins AFTER INSERT ON game_pay_cash_coupon_trans FOR EACH ROW EXECUTE PROCEDURE trig_func_game_pay_cash_coupon_trans_aft_ins()
Has OIDs: no

The sequence in question

mallball=> select * from game_pay_cash_coupon_trans_seq;
         sequence_name          | last_value | increment_by |      max_value      | min_value | cache_value | log_cnt | is_cycled | is_called
--------------------------------+------------+--------------+---------------------+-----------+-------------+---------+-----------+-----------
game_pay_cash_coupon_trans_seq |  100000815 |            1 | 9223372036854775807 |         1 |           1 |      32 | f         | t


The build in question

mallball=> select * from version();
                                                version                                               
-------------------------------------------------------------------------------------------------------
PostgreSQL 8.0.1 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)


Thanks
Robert Perry

[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux