I just upgraded a site from 1.6.2 to 1.9.1 I have a big issue with configurable products. Impossible to add them to the cart. I always get "Please specify the product's option(s)."
There is no error in system.log or exception.log
Test I've done so far:
it seems not theme related: on the updated site I have the issue with all themes I use (even default Magento or RWD).
I have not modified 1 single line from default 1.9.1 Magento install.
If I test a fresh 1.9.1 Magento install (not with our old database) I have no issues (so not server related).
the POST call to add product to the cart seems correct (contains form_key, product id and attribute).
all caches and all indexes have been refreshed and refreshed and refreshed.
disabled all extensions.
So I think the issue comes from the database as I'm using the 1.9.1 files with the 1.6.2 database. The database has been upgraded the first time I opened the site. I tired that upgrade multiple times and always face the issue. Because of all the testing I've done I think it can only be related to something not setup properly in the database: something in the database that has not upgraded and is not compatible with the 1.9.1 files.
So I also tried the following:
I created a new configurable product on the new install with a new created attibute. Same issue.
I added custom logging to some "Add to cart" functions and compared logs to same process on a fresh install. I can see some differences there but can't explain them. On the install with the issue, the Add to cart process seems to be executed twice. The first time the $buyRequest variable seems to have the correct settings including attribute value but the second time the $buyRequest seems to have no attribute value any more and therefore the function returns "Please specify the product's option(s).". The last function executed is _prepareProduct (from app/code/core/Mage/Catalog/Model/Product/Type/Configurable.php). On the new install that function is executed twice (and on all working installs it's only executed once).
EDIT: added more details about "executed twice".
If I check the net debuger in browser or using Fiddler, there is only 1 POST request.
If I add some debug logging in the _prepareProduct function like:
Mage::log("###### Start _prepareProduct ######");
$attributes = $buyRequest->getSuperAttribute(); (first line of code of the function)
Mage::log($attributes);
$r = debug_backtrace();foreach($r as $s){Mage::log($s['file']);Mage::log($s['line']);}
It logs
2015-01-30T10:54:46+00:00 DEBUG (7): ###### Start _prepareProduct ######
2015-01-30T10:54:46+00:00 DEBUG (7): Array
(
[141] => 274
)
2015-01-30T10:54:46+00:00 DEBUG (7): /home/keysun/public_html/new/app/code/core/Mage/Catalog/Model/Product/Type/Abstract.php
2015-01-30T10:54:46+00:00 DEBUG (7): 410
2015-01-30T10:54:46+00:00 DEBUG (7): /home/keysun/public_html/new/app/code/core/Mage/Sales/Model/Quote.php
2015-01-30T10:54:46+00:00 DEBUG (7): 969
2015-01-30T10:54:46+00:00 DEBUG (7): /home/keysun/public_html/new/app/code/core/Mage/Sales/Model/Quote.php
2015-01-30T10:54:46+00:00 DEBUG (7): 1046
2015-01-30T10:54:46+00:00 DEBUG (7): /home/keysun/public_html/new/app/code/core/Mage/Checkout/Model/Cart.php
2015-01-30T10:54:46+00:00 DEBUG (7): 265
2015-01-30T10:54:46+00:00 DEBUG (7): /home/keysun/public_html/new/app/code/core/Mage/Checkout/controllers/CartController.php
2015-01-30T10:54:46+00:00 DEBUG (7): 218
2015-01-30T10:54:46+00:00 DEBUG (7): /home/keysun/public_html/new/app/code/core/Mage/Core/Controller/Varien/Action.php
2015-01-30T10:54:46+00:00 DEBUG (7): 418
2015-01-30T10:54:46+00:00 DEBUG (7): /home/keysun/public_html/new/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php
2015-01-30T10:54:46+00:00 DEBUG (7): 250
2015-01-30T10:54:46+00:00 DEBUG (7): /home/keysun/public_html/new/app/code/core/Mage/Core/Controller/Varien/Front.php
2015-01-30T10:54:46+00:00 DEBUG (7): 172
2015-01-30T10:54:46+00:00 DEBUG (7): /home/keysun/public_html/new/app/code/core/Mage/Core/Model/App.php
2015-01-30T10:54:46+00:00 DEBUG (7): 354
2015-01-30T10:54:46+00:00 DEBUG (7): /home/keysun/public_html/new/app/Mage.php
2015-01-30T10:54:46+00:00 DEBUG (7): 684
2015-01-30T10:54:46+00:00 DEBUG (7): /home/keysun/public_html/new/index.php
2015-01-30T10:54:46+00:00 DEBUG (7): 87
2015-01-30T10:54:46+00:00 DEBUG (7): result1
2015-01-30T10:54:54+00:00 DEBUG (7): ###### Start _prepareProduct ######
2015-01-30T10:54:54+00:00 DEBUG (7):
2015-01-30T10:54:54+00:00 DEBUG (7): /home/keysun/public_html/new/app/code/core/Mage/Catalog/Model/Product/Type/Abstract.php
2015-01-30T10:54:54+00:00 DEBUG (7): 410
2015-01-30T10:54:54+00:00 DEBUG (7): /home/keysun/public_html/new/app/code/core/Mage/Sales/Model/Quote.php
2015-01-30T10:54:54+00:00 DEBUG (7): 969
2015-01-30T10:54:54+00:00 DEBUG (7): /home/keysun/public_html/new/app/code/core/Mage/Sales/Model/Quote.php
2015-01-30T10:54:54+00:00 DEBUG (7): 1046
2015-01-30T10:54:54+00:00 DEBUG (7): /home/keysun/public_html/new/app/code/core/Mage/Checkout/Model/Cart.php
2015-01-30T10:54:54+00:00 DEBUG (7): 265
2015-01-30T10:54:54+00:00 DEBUG (7): /home/keysun/public_html/new/app/code/core/Mage/Checkout/controllers/CartController.php
2015-01-30T10:54:54+00:00 DEBUG (7): 218
2015-01-30T10:54:54+00:00 DEBUG (7): /home/keysun/public_html/new/app/code/core/Mage/Core/Controller/Varien/Action.php
2015-01-30T10:54:54+00:00 DEBUG (7): 418
2015-01-30T10:54:54+00:00 DEBUG (7): /home/keysun/public_html/new/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php
2015-01-30T10:54:54+00:00 DEBUG (7): 250
2015-01-30T10:54:54+00:00 DEBUG (7): /home/keysun/public_html/new/app/code/core/Mage/Core/Controller/Varien/Front.php
2015-01-30T10:54:54+00:00 DEBUG (7): 172
2015-01-30T10:54:54+00:00 DEBUG (7): /home/keysun/public_html/new/app/code/core/Mage/Core/Model/App.php
2015-01-30T10:54:54+00:00 DEBUG (7): 354
2015-01-30T10:54:54+00:00 DEBUG (7): /home/keysun/public_html/new/app/Mage.php
2015-01-30T10:54:54+00:00 DEBUG (7): 684
2015-01-30T10:54:54+00:00 DEBUG (7): /home/keysun/public_html/new/index.php
2015-01-30T10:54:54+00:00 DEBUG (7): 87
2015-01-30T10:54:54+00:00 DEBUG (7): result3
Notes on the above log: - same debug code on a normal fresh install will only log the 1st part until result1. - in the first part you can see that the $attributes variable contains attribute value (that is good) but in the second it's gone and that's why it returns "Please specify the product's option(s).". - there is a huge time gap between the 2 parts of 8s (I logged deeper in the function like router (app/code/core/Mage/Core/Controller/Varien/Router/Standard.php) and they seem to be executed around 80 times. That could be an issue but I have no clue about how Magento routers work or how to debug further). So I don't know why it's executed twice but that seems the cause of the error message.
removed all extension and custom tables from the database
checked structure of database (fresh 1.9.1 install vs upgraded 1.6.2 install). There are a lot of differences like default value and some fields that are not there but they are for tables that seems to not impact products.
Has someone faced the same issue? or has any clue why settings in the database could change the Add to cart behaviour for configurable products?
Test site: http://new.keysun.com.au/store/key-sun-zinke-stick-spf-30-5g