craftcms / commerce

Fully integrated ecommerce for Craft CMS.
https://craftcms.com/commerce
Other
215 stars 169 forks source link

[5.x]: Integrity constraint violation: 1062 Duplicate entry #3522

Closed bartdigitalpulse closed 1 month ago

bartdigitalpulse commented 1 month ago

What happened?

Description

I'm testing Craft Commerce. I have 3 sites setup in admin/settings/sites (BE, NL, FR). I have two locations and two stores. I get the error when I create a cart on BE site, switch to FR site (new empty cart) and try to add to cart.

Steps to reproduce

  1. Create a cart in one site
  2. Add item
  3. Switch to other site, cart is empty
  4. Add item to cart, get error

Full stack trace:

PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'd94513fca1d44709cb72b6b368799253' for key 'commerce_orders.idx_avnexkdozvoizbroaljmejhzjpkdmjkruuew' in /var/www/html/vendor/yiisoft/yii2/db/Command.php:1302
Stack trace:
#0 /var/www/html/vendor/yiisoft/yii2/db/Command.php(1302): PDOStatement->execute()
#1 /var/www/html/vendor/yiisoft/yii2/db/Command.php(1102): yii\db\Command->internalExecute('INSERT INTO `co...')
#2 /var/www/html/vendor/yiisoft/yii2/db/Schema.php(431): yii\db\Command->execute()
#3 /var/www/html/vendor/yiisoft/yii2/db/ActiveRecord.php(604): yii\db\Schema->insert('{{%commerce_ord...', Array)
#4 /var/www/html/vendor/yiisoft/yii2/db/ActiveRecord.php(570): yii\db\ActiveRecord->insertInternal(NULL)
#5 /var/www/html/vendor/yiisoft/yii2/db/BaseActiveRecord.php(676): yii\db\ActiveRecord->insert(false, NULL)
#6 /var/www/html/vendor/craftcms/commerce/src/elements/Order.php(2236): yii\db\BaseActiveRecord->save(false)
#7 /var/www/html/vendor/craftcms/cms/src/services/Elements.php(3673): craft\commerce\elements\Order->afterSave(true)
#8 /var/www/html/vendor/craftcms/cms/src/services/Elements.php(1169): craft\services\Elements->craft\services\{closure}()
#9 /var/www/html/vendor/craftcms/cms/src/services/Elements.php(3489): craft\services\Elements->ensureBulkOp(Object(Closure))
#10 /var/www/html/vendor/craftcms/cms/src/services/Elements.php(1250): craft\services\Elements->_saveElementInternal(Object(craft\commerce\elements\Order), false, false, NULL, Array, false, false, true)
#11 /var/www/html/vendor/craftcms/commerce/src/services/Carts.php(182): craft\services\Elements->saveElement(Object(craft\commerce\elements\Order), false)
#12 /var/www/html/vendor/craftcms/commerce/src/controllers/CartController.php(593): craft\commerce\services\Carts->getCart(true)
#13 /var/www/html/vendor/craftcms/commerce/src/controllers/CartController.php(138): craft\commerce\controllers\CartController->_getCart(true)
#14 [internal function]: craft\commerce\controllers\CartController->actionUpdateCart()
#15 /var/www/html/vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array(Array, Array)
#16 /var/www/html/vendor/yiisoft/yii2/base/Controller.php(178): yii\base\InlineAction->runWithParams(Array)
#17 /var/www/html/vendor/yiisoft/yii2/base/Module.php(552): yii\base\Controller->runAction('update-cart', Array)
#18 /var/www/html/vendor/craftcms/cms/src/web/Application.php(349): yii\base\Module->runAction('commerce/cart/u...', Array)
#19 /var/www/html/vendor/craftcms/cms/src/web/Application.php(650): craft\web\Application->runAction('commerce/cart/u...', Array)
#20 /var/www/html/vendor/craftcms/cms/src/web/Application.php(311): craft\web\Application->_processActionRequest(Object(craft\web\Request))
#21 /var/www/html/vendor/yiisoft/yii2/base/Application.php(384): craft\web\Application->handleRequest(Object(craft\web\Request))
#22 /var/www/html/web/index.php(12): yii\base\Application->run()
#23 {main}

Next yii\db\IntegrityException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'd94513fca1d44709cb72b6b368799253' for key 'commerce_orders.idx_avnexkdozvoizbroaljmejhzjpkdmjkruuew'
The SQL being executed was: INSERT INTO `commerce_orders` (`id`, `storeId`, `number`, `reference`, `itemTotal`, `itemSubtotal`, `email`, `orderCompletedEmail`, `isCompleted`, `dateOrdered`, `datePaid`, `dateAuthorized`, `shippingMethodHandle`, `shippingMethodName`, `paymentSourceId`, `gatewayId`, `orderStatusId`, `couponCode`, `total`, `totalPrice`, `totalPaid`, `totalDiscount`, `totalShippingCost`, `totalTax`, `totalTaxIncluded`, `totalQty`, `totalWeight`, `currency`, `lastIp`, `orderLanguage`, `orderSiteId`, `origin`, `paymentCurrency`, `customerId`, `registerUserOnOrderComplete`, `saveBillingAddressOnOrderComplete`, `saveShippingAddressOnOrderComplete`, `returnUrl`, `cancelUrl`, `message`, `paidStatus`, `recalculationMode`, `sourceShippingAddressId`, `sourceBillingAddressId`, `dateUpdated`, `dateCreated`, `shippingAddressId`, `billingAddressId`, `uid`) VALUES (6639, 2, 'd94513fca1d44709cb72b6b368799253', NULL, '0', '0', 'test@test.com', NULL, 0, NULL, NULL, NULL, '', '', NULL, NULL, NULL, NULL, '0', '0', '0', '0', '0', '0', '0', 0, '0', 'EUR', '172.23.0.1', 'fr', 2, 'web', 'EUR', 1, 0, 0, 0, NULL, NULL, NULL, 'unpaid', 'all', NULL, NULL, '2024-05-24 14:09:03', '2024-05-24 14:09:03', NULL, NULL, '8188f004-8059-43cd-95d4-26619dbc23ef') in /var/www/html/vendor/yiisoft/yii2/db/Schema.php:676
Stack trace:
#0 /var/www/html/vendor/yiisoft/yii2/db/Command.php(1307): yii\db\Schema->convertException(Object(PDOException), 'INSERT INTO `co...')
#1 /var/www/html/vendor/yiisoft/yii2/db/Command.php(1102): yii\db\Command->internalExecute('INSERT INTO `co...')
#2 /var/www/html/vendor/yiisoft/yii2/db/Schema.php(431): yii\db\Command->execute()
#3 /var/www/html/vendor/yiisoft/yii2/db/ActiveRecord.php(604): yii\db\Schema->insert('{{%commerce_ord...', Array)
#4 /var/www/html/vendor/yiisoft/yii2/db/ActiveRecord.php(570): yii\db\ActiveRecord->insertInternal(NULL)
#5 /var/www/html/vendor/yiisoft/yii2/db/BaseActiveRecord.php(676): yii\db\ActiveRecord->insert(false, NULL)
#6 /var/www/html/vendor/craftcms/commerce/src/elements/Order.php(2236): yii\db\BaseActiveRecord->save(false)
#7 /var/www/html/vendor/craftcms/cms/src/services/Elements.php(3673): craft\commerce\elements\Order->afterSave(true)
#8 /var/www/html/vendor/craftcms/cms/src/services/Elements.php(1169): craft\services\Elements->craft\services\{closure}()
#9 /var/www/html/vendor/craftcms/cms/src/services/Elements.php(3489): craft\services\Elements->ensureBulkOp(Object(Closure))
#10 /var/www/html/vendor/craftcms/cms/src/services/Elements.php(1250): craft\services\Elements->_saveElementInternal(Object(craft\commerce\elements\Order), false, false, NULL, Array, false, false, true)
#11 /var/www/html/vendor/craftcms/commerce/src/services/Carts.php(182): craft\services\Elements->saveElement(Object(craft\commerce\elements\Order), false)
#12 /var/www/html/vendor/craftcms/commerce/src/controllers/CartController.php(593): craft\commerce\services\Carts->getCart(true)
#13 /var/www/html/vendor/craftcms/commerce/src/controllers/CartController.php(138): craft\commerce\controllers\CartController->_getCart(true)
#14 [internal function]: craft\commerce\controllers\CartController->actionUpdateCart()
#15 /var/www/html/vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array(Array, Array)
#16 /var/www/html/vendor/yiisoft/yii2/base/Controller.php(178): yii\base\InlineAction->runWithParams(Array)
#17 /var/www/html/vendor/yiisoft/yii2/base/Module.php(552): yii\base\Controller->runAction('update-cart', Array)
#18 /var/www/html/vendor/craftcms/cms/src/web/Application.php(349): yii\base\Module->runAction('commerce/cart/u...', Array)
#19 /var/www/html/vendor/craftcms/cms/src/web/Application.php(650): craft\web\Application->runAction('commerce/cart/u...', Array)
#20 /var/www/html/vendor/craftcms/cms/src/web/Application.php(311): craft\web\Application->_processActionRequest(Object(craft\web\Request))
#21 /var/www/html/vendor/yiisoft/yii2/base/Application.php(384): craft\web\Application->handleRequest(Object(craft\web\Request))
#22 /var/www/html/web/index.php(12): yii\base\Application->run()
#23 {main}
Additional Information:
Array
(
    [0] => 23000
    [1] => 1062
    [2] => Duplicate entry 'd94513fca1d44709cb72b6b368799253' for key 'commerce_orders.idx_avnexkdozvoizbroaljmejhzjpkdmjkruuew'
)

Craft CMS version

Craft Pro 5.1.5

Craft Commerce version

5.0.7

PHP version

8.2

Operating system and version

No response

Database type and version

MySQL 8.0.33

Image driver and version

No response

Installed plugins and versions

-

linear[bot] commented 1 month ago

PT-1760 [5.x]: Integrity constraint violation: 1062 Duplicate entry

lukeholder commented 1 month ago

@bartdigitalpulse could you please send your DB backup, composer.json and composer.lock to supprt@craftcms.com so we can try and reproduce this issue and look into it more. Please reference this ticket when emailing us. Thanks!

lukeholder commented 1 month ago

Thanks for reporting this. We have fixed it for the next release.

To get the fix early, change your craftcms/commerce requirement in composer.json to:

"require": {
  "craftcms/commerce": "5.x-dev#8d7faede5113cb4cd0195e4d8f7bba49dc6e5acb",
  "...": "..."
}

Then run composer update.

We will update this ticket once this fix makes it into the next release.

brandonkelly commented 1 month ago

Commerce 5.0.8 is out now with that fix. Thanks again!