<br />
Database error: Duplicate entry '0-104' for key 'PRIMARY' (1062)<br />
Invalid query: INSERT INTO cscart_order_details (`item_id`, `order_id`, `product_id`, `product_code`, `price`, `amount`, `extra`) VALUES ('-1581168983', '104',<br />
```<br />
<br />
Please note that the item_id is -1581168983 which is not valid. The latest item_id in this table is 4294458594. I assume we have exceeded the maximum value for item_id (int11) so it is defaulting to 0 resulting in the duplicate entry. How to fix this issue? Thank you!
Odd that this is returning such a large number. Never seen that before. But yes, the immediate solution to your problem is to change the schema definition of item_id from int(11) to int(13). But before you do that, make sure that it's defined as 'unsigned'.
Generally the product key in the cart (item_id for the cart item) is generated from the product_id and the options. Different things happen depending on whether you have inventory tracking enabled, etc.
I would first check that the definition is “int(11) unsigned not null” and if so, I would submit an urgent defect to bugtracker and temporarily change the definition to “int(13) unsigned not null”. But that's getting to be a pretty big number and could break other things if it's allowed.
I'm guessing that the high number exceeds the integer size of your version of PHP and so when it's computed, it is being displayed as a negative number. Note that the log may be printing it as a negative when in fact is is being passed as an unsigned. I.e. the format is not set for an unsigned value.
But the sql error says dup entry for 0-104. The zero would be the item_id and 104 is the order_id (primary key is the pair of item_id/order_id) So would need to understand what it's seeing it as a zero. Suggest you let the DBA's at cs-cart figure it out.
Probably because it's being used as a string in the first instance and a signed number in the second. This is all going to depend on which version php you are running, whether it's 32 or 64 bit, etc.
Again, I would suggest you contact helpdesk and have them deal with it as a bug.