Note that there are some explanatory texts on larger screens.

plurals
  1. POResue from Mysql unique index duplicate entry
    primarykey
    data
    text
    <p>I am trying to fix a double request problem: when browser spawn two or more identical requests to server and they got processed on different app servers.</p> <p>In this case one of two requests hits:</p> <pre><code>Mysql::Error: Duplicate entry '...' for key 'index_purchases_on_site_id_and_order_number_and_email </code></pre> <p>There is rescue code afterwards that selects existing record instead that uses the same parameters as insert request:</p> <pre><code>select * from purchases where site_id = ? and order_number = ? and email = ? </code></pre> <p>But it doesn't find anything in database.</p> <p>A fragment from DB query log:</p> <pre><code> SQL (1.3ms) BEGIN ...... Purchase Create (0.0ms) Mysql::Error: Duplicate entry '1887-100264587-9z1CIIDsH2a21+AEEH2OR9LsndO3oIS4D4Am1U5XJ04= ' for key 'index_purchases_on_site_id_and_order_number_and_email': INSERT INTO `purchases` (`order_date`, `referrer`, `created_at`, `updated_at`, `encrypted_email`, `visitor_id`, `order_number`, `coupon_code`, `subtotal`, `customer_id`, `site_id`, `ip_address`) VALUES('2013-01-14 20:57:47', 'https://www.bonobos.com/b/checkout', '2013-01-14 20:57:47', '2013-01-14 20:57:47', '9z1CIIDsH2a21+AEEH2OR9LsndO3oIS4D4Am1U5XJ04=\n', 15813843, '100264587', '', 218.0, NULL, 1887, '12.106.186.6') Purchase Load (0.5ms) SELECT * FROM `purchases` WHERE (order_number = '100264587' AND site_id = 1887 AND encrypted_email = '9z1CIIDsH2a21+AEEH2OR9LsndO3oIS4D4Am1U5XJ04=\n') LIMIT 1 SQL (18.0ms) ROLLBACK </code></pre> <p>How is this possible? </p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload