SQL Fehler nach Update auf 5.4.4 - Shopware oder Plugin Problem?

Hi,

mir ist gerade per Zufall aufgefallen, dass seit dem Update von 5.4.2 auf 5.4.4 ein Fehler auftritt, wenn man beim Filter Variationen filtert. Eigenschaften funktionieren problemlos aber z.B: das Feld Größe führt zu einem 503 Error.

Folgende Fehler bekomme ich dann per Mail und in den Apache/PHP/MySql logs ist nichts zu finden:

CRITICAL
Message:	
An exception occurred while executing 'SELECT SQL_CALC_FOUND_ROWS product.id as __product_id, variant.id as__ variant_id, variant.ordernumber as __variant_ordernumber, listing_price.* FROM s_articles product INNER JOIN s_articles_details variant ON variant.articleID = product.id
                 AND variant.active = 1
                 AND product.active = 1 INNER JOIN s_articles_categories_ro productCategory ON productCategory.articleID = product.id
            AND productCategory.categoryID IN (?) LEFT JOIN s_articles_avoid_customergroups avoidCustomerGroup ON avoidCustomerGroup.articleID = product.id
             AND avoidCustomerGroup.customerGroupId IN (?) INNER JOIN s_articles_supplier manufacturer ON manufacturer.id = product.supplierID
             AND product.supplierID IN (?) LEFT JOIN s_articles_top_seller_ro topSeller ON topSeller.article_id = product.id INNER JOIN s_articles_attributes productAttribute ON productAttribute.articledetailsID = variant.id INNER JOIN s_article_configurator_option_relations options_29 ON variant.id = options_29.article_id
             AND (options_29.option_id = ?) LEFT JOIN (SELECT IFNULL(listing_price.`id`, onsale_listing_price.`id`) `id`,IFNULL(listing_price.`pricegroup`, onsale_listing_price.`pricegroup`) `pricegroup`,IFNULL(listing_price.`from`, onsale_listing_price.`from`) `from`,IFNULL(listing_price.`to`, onsale_listing_price.`to`) `to`,IFNULL(listing_price.`articleID`, onsale_listing_price.`articleID`) `articleID`,IFNULL(listing_price.`articledetailsID`, onsale_listing_price.`articledetailsID`) `articledetailsID`,IFNULL(listing_price.`price`, onsale_listing_price.`price`) `price`,IFNULL(listing_price.`pseudoprice`, onsale_listing_price.`pseudoprice`) `pseudoprice`,IFNULL(listing_price.`baseprice`, onsale_listing_price.`baseprice`) `baseprice`,IFNULL(listing_price.`percent`, onsale_listing_price.`percent`) `percent`, 
            IFNULL(listing_price.cheapest_price, onsale_listing_price.cheapest_price) AS cheapest_price,
            IFNULL(listing_price.variant_id, onsale_listing_price.variant_id) AS variant_id,
            IFNULL(listing_price.different_price_count, onsale_listing_price.different_price_count) AS different_price_count,
            IFNULL(listing_price.product_id, onsale_listing_price.product_id) AS product_id
             FROM s_articles_details variant LEFT JOIN (SELECT prices.*, MIN(ROUND(prices.price * ((100 - IFNULL(priceGroup.discount, 0)) / 100) * (( (CASE tax.id WHEN 1 THEN 19 WHEN 4 THEN 7 END) + 100) / 100) * 1, 2)) AS cheapest_price, prices.articledetailsID AS variant_id, COUNT(DISTINCT price) as different_price_count, prices.articleID AS product_id FROM s_articles product INNER JOIN (SELECT defaultPrice.`id`,defaultPrice.`pricegroup`,defaultPrice.`from`,defaultPrice.`to`,defaultPrice.`articleID`,defaultPrice.`articledetailsID`,defaultPrice.`price`,defaultPrice.`pseudoprice`,defaultPrice.`baseprice`,defaultPrice.`percent` FROM s_articles_prices defaultPrice INNER JOIN s_articles_details details ON details.id = defaultPrice.articledetailsID WHERE (defaultPrice.pricegroup = ?) AND ((details.laststock * details.instock) >= (details.laststock * details.minpurchase))) prices ON product.id = prices.articleID INNER JOIN s_core_tax tax ON tax.id = product.taxID INNER JOIN s_articles_details availableVariant ON availableVariant.articleID = product.id
             AND availableVariant.active = 1 LEFT JOIN s_core_pricegroups_discounts priceGroup ON priceGroup.groupID = product.pricegroupID
             AND priceGroup.discountstart = 1
             AND priceGroup.customergroupID = ?
             AND product.pricegroupActive = 1 INNER JOIN s_articles_details variant ON variant.id = prices.articledetailsID AND variant.active = 1 WHERE (prices.articledetailsID = availableVariant.id) AND (prices.from = 1) GROUP BY prices.articleID) listing_price ON listing_price.product_id = variant.articleId LEFT JOIN (SELECT prices.*, MAX(ROUND(prices.price * ((100 - IFNULL(priceGroup.discount, 0)) / 100) * (( (CASE tax.id WHEN 1 THEN 19 WHEN 4 THEN 7 END) + 100) / 100) * 1, 2)) AS cheapest_price, prices.articledetailsID AS variant_id, COUNT(DISTINCT price) as different_price_count, prices.articleID AS product_id FROM s_articles product INNER JOIN (SELECT defaultPrice.`id`,defaultPrice.`pricegroup`,defaultPrice.`from`,defaultPrice.`to`,defaultPrice.`articleID`,defaultPrice.`articledetailsID`,defaultPrice.`price`,defaultPrice.`pseudoprice`,defaultPrice.`baseprice`,defaultPrice.`percent` FROM s_articles_prices defaultPrice WHERE defaultPrice.pricegroup = ?) prices ON product.id = prices.articleID INNER JOIN s_core_tax tax ON tax.id = product.taxID INNER JOIN s_articles_details availableVariant ON availableVariant.articleID = product.id
             AND availableVariant.active = 1 LEFT JOIN s_core_pricegroups_discounts priceGroup ON priceGroup.groupID = product.pricegroupID
             AND priceGroup.discountstart = 1
             AND priceGroup.customergroupID = ?
             AND product.pricegroupActive = 1 INNER JOIN s_articles_details variant ON variant.id = prices.articledetailsID AND variant.active = 1 WHERE (prices.articledetailsID = availableVariant.id) AND (prices.from = 1) GROUP BY prices.articleID) onsale_listing_price ON onsale_listing_price.product_id = variant.articleId) listing_price ON listing_price.product_id = variant.articleId WHERE (avoidCustomerGroup.articleID IS NULL) AND (variant.active = 1) GROUP BY product.id ORDER BY variant.instock DESC, product.datum DESC, product.changetime DESC, topSeller.sales DESC, listing_price.cheapest_price ASC, variant.id ASC LIMIT 1' with params [121, 1, 40, 29, "EK", 1, "EK", 1]:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'listing_price.articleID' in 'field list'
Time:	
2018-06-12T13:41:34.781128+0200
Channel:	
core
request:	
{
    "uri": "/widgets/listing/listingCount/sCategory/121?p=1&o=7&n=60&s=40&var=29",
    "method": "GET",
    "query": {
        "p": "1",
        "o": "7",
        "n": "60",
        "s": "40",
        "var": "29",
        "module": "widgets",
        "controller": "listing",
        "action": "listingCount",
        "sCategory": "121",
        "sPage": "1",
        "sPerPage": "60",
        "sSupplier": "40",
        "sSort": "7",
        "variants": "29"
    },
    "post": []
}
session:	
No session data available
shopId:	
1
shopName:	
Hauptshop Deutsch

 

Hat einer eine Idee woher das kommen könnte?

Hey,

was hast du für eine PHP Version und MySQL Version?

Unverändert gelasen auf PHP 7.0.30 und MySQL 5.5.5

Die einzige veränderung war einen Tag zuvor das Update auf 5.4.4

Der Fehler sieht mir auch danach aus, dass Shopware etwas ind er Datenbank nicht finden kann

hallo! habe exakt den selben fehler bei mir seit ich auf 5.4.4 aktualisiert habe. da wir schon zu zweit sind habe ich mal ein issue gepostet: Shopware Issuetracker

1 Like

Hab das selbe Problem mit Fehler 503 bei Variantenfiltrierung auch auf einem 2. Shop  mit der neuen Version 5.4.5

Beide Shops laufen auf dem Selben Server auf Plesk mit Apache und Nginx Static proxy. Shop 1 mit PHP 7.0 und Shop 2 mit PHP 7.2

Shop 2 Ist noch recht frisch und noch nicht im Produktivmodus. Das einzige was beide Shops gleich haben ist das PayPal und JTL Plugin.

 

Edit: Hab den Sicherheitsmodus mal getestet und somit alle nicht Shopwareplugins deaktiviert, der Fehler bleibt aber.

Wird mit 5.4.6 behoben im Commit SW-21940 - Fix VariantFilter with MariaDB · shopware/shopware@ebf4e64 · GitHub

klasse, vielen dank!