Moin,
mittlerweile bin ich einigermaßen warm geworden und bekomme meinen Shop in SW6 ganz gut umgesetzt. Heute morgen ist mir jedoch aufgefallen, dass ich keine Produkte mehr löschen kann. Version ist 6.7.5.0 - es kommt in der GUI auch keine Fehlermeldung, es steht nichts im Log. Ich habe bereits alle Erweiterungen deaktiviert und es geht trotzdem nicht. Das Produkt bzw. die Produkte sind auch keinem Verkaufskanal mehr zugewiesen.
Hat das schonmal jemand gehabt? Es funktionieren weder “einfache” Produkte, noch Varianteprodukte oder einzelne Varianten.
MariaDB in Verwendung? Da gibt es einen bekannten Bug, der auch schon behoben wurde, aber noch nicht in einem Update veröffentlicht.
Was sagt denn der Datenbank bzw. Server Error Log?
Nein, es ist eine MySQL DB. Ich schau mal, ob ich Zugriff auf die Logs habe.
EDIT: Es ist doch eine MariaDB - dann erklärt es das.
Das Server Log sagt leider gar nichts - das DB Log habe ich angefordert. Mal schauen, ob ich es bekomme
Ich hab das gleiche Problem. Shopware 6.7.5.1 und MariaDB 
request.CRITICAL: Uncaught PHP Exception Doctrine\DBAL\Exception\SyntaxErrorException: "An exception occurred while executing a query: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'pcs WHERE pcs.product_id IN ('?62?\001F?Mw?\0?\0013?\001E`?')
Ist bereits gefixt und sollte im nächsten Update mit ausgespielt werden.
In der Zwischenzeit kann man den Fix manuell einfügen: ProductSubscriber DELETE syntax fails with MariaDB · Issue #13808 · shopware/shopware · GitHub
Laut Hoster Maria DB 10.11.14
Wir haben das gleiche Problem. Shopware 6.7.5.0 und MariaDB 10.11.7
Was ich nicht verstehe im Testshop können wir die Produkte löschen, im Liveshop allerdings nicht. Sind bei beiden die gleiche Version.
Im Symfony error log bzw. im MariaDB error log sollte der Fehler protokolliert sein. Daran kann man ja erkennen, welche Abfrage fehl schlägt.
Nach dem überschreiben der Dateien den Cache geleert?
Ich habe deinen Fix noch gar nicht eingebaut, das es im Testshop auch ohne funktioniert. Im Liveshop kommt beim Löschen folgende Fehlermeldung:
Uncaught PHP Exception Doctrine\DBAL\Exception\SyntaxErrorException: „An exception occurred while executing a query: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ‚pcs WHERE pcs.product_id IN (‘\0001?+h\000B?qԞ?c?\0013\000C3`‚) AN…‘ at line 1“ at ExceptionConverter.php line 78 {„exception“:„[object] (Doctrine\\DBAL\\Exception\\SyntaxErrorException(code: 1064): An exception occurred while executing a query: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ‚pcs\n WHERE pcs.product_id IN (‘\\0001?+h\\000B?qԞ?c?\\0013\\000C3`‚)\n AN…‘ at line 1 at /home/…/…/vendor/doctrine/dbal/src/Driver/API/MySQL/ExceptionConverter.php:78)\n[previous exception] [object] (Doctrine\\DBAL\\Driver\\PDO\\Exception(code: 1064): SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ‚pcs\n WHERE pcs.product_id IN (‘\\0001?+h\\000B?qԞ?c?\\0013\\000C3`‚)\n AN…‘ at line 1 at /home/…/…/vendor/doctrine/dbal/src/Driver/PDO/Exception.php:24)\n[previous exception] [object] (PDOException(code: 42000): SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ‚pcs\n WHERE pcs.product_id IN (‘\\0001?+h\\000B?qԞ?c?\\0013\\000C3`‚)\n AN…‘ at line 1 at /home/…/…/vendor/doctrine/dbal/src/Driver/PDO/Statement.php:55)“}
Löst dein Fix das?
Der Fehlercode in GitHub sieht ziemlich identisch aus. Da er in Verbindung mit MariaDB auftritt, sehr wahrscheinlich ja.
1 „Gefällt mir“
Ok danke dann probiere ich das mal aus!
Was ich mittlerweile herausgefunden habe: In der aktuellen Version 6.7.5.1 gibt es “Produkteinheit”, dieses war vorher 6.6.10.5 nicht vorhanden. Die Produkteinheit habe ich zwar beim Artikel hinterlegt, lässt sich jedoch trotzdem nicht löschen. Auch bei neu angelegtem Artikel über das Backend
Ich habe jetzt den ProductSubscriper angepasst:
// Clean up configurator settings for parents that no longer have variants using those options
// Filtere Parent-IDs: keine NULLs, keine leeren Strings, nur gültige Hex-Zeichen
$parentIdsFiltered = array_filter($parentIds, fn($id) => !empty($id) && ctype_xdigit($id));
if (empty($parentIdsFiltered)) {
// Keine gültigen Parent-IDs → Query komplett überspringen
return;
}
// Hex-Strings in Binary konvertieren
$parentIdsBinary = array_map(fn($id) => hex2bin($id), $parentIdsFiltered);
// Nur ausführen, wenn Binary-Array nicht leer ist
if (count($parentIdsBinary) === 0) {
return;
}
// Query ausführen: Verwaiste configurator_settings löschen
$this->connection->executeStatement(
‚DELETE FROM product_configurator_setting pcs
WHERE pcs.product_id IN (:parentIds)
AND pcs.product_version_id = :versionId
AND NOT EXISTS (
SELECT 1
FROM product_option po
INNER JOIN product p ON p.id = po.product_id AND p.version_id = po.product_version_id
WHERE p.parent_id = pcs.product_id
AND p.version_id = :versionId
AND po.property_group_option_id = pcs.property_group_option_id
AND po.product_version_id = :versionId
)‘,
[
‚parentIds‘ => $parentIdsBinary,
‚versionId‘ => $versionBytes,
],
[
‚parentIds‘ => ArrayParameterType::BINARY,
]
);
KEINE Garantie
Leider komme ich gerade nicht ganz klar. Bei mir ist das Problem immer noch vorhanden.
SW 6.7.5.1
Alle Updates, die standardmäßig installiert werden, wurden installiert, aber das Problem erscheint immer noch.
Allerdings nutze ich für den Abgleich JTL-Wawi.
Aber dort komme ich auch nicht weiter
Der Fix ist auf GitHub, aber noch nicht in Shopware. Du musst auf 6.7.6.0 warten oder den Fix manuell implementieren.
Achso, es hatte mich irritert das dort 6.7.5.0 stand.