Neu SQL Syntax-Error beim Abgleich von Variationsartikeln

  • Wenn Ihr uns das erste Mal besucht, lest euch bitte zuerst die Foren-Regeln durch.
26. Juli 2018
10
1
#1
Hallo,

beim Abgleich von Artikeln mit Variationskombinationen wird nur der Vaterartikel ohne Variationskombination korrekt an Woocommerce gesendet. Das heißt die Varianten landen nicht in Woocommerce. Folgender damit ziemlich eindeutig zusammenhängender Output ist im PHP Errorlog unseres Servers zu finden:

Code:
[Mon Jan 21 17:55:30.608431 2019] [:error] [pid 3112:tid 139647875217152] [client 123.123.123.123:52554] FastCGI: server "/path/to/php7.2-fpm-blackbeards.de" stderr: PHP message: WordPress-Datenbank-Fehler 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 's Bart\xc3\xb6l Classic'' at line 5 f\xc3\xbcr Abfrage SELECT  lsv.host_id , lsv.endpoint_id, t.term_id, t.name, tt.term_taxonomy_id, tt.taxonomy, t.slug
[Mon Jan 21 17:55:30.608435 2019] [:error] [pid 3112:tid 139647875217152] [client 123.123.123.123:52554] FastCGI: server "/usr/sbin/php7.2-fpm-blackbeards.de" stderr:                 FROM obfuscatedprefix_terms t
[Mon Jan 21 17:55:30.608438 2019] [:error] [pid 3112:tid 139647875217152] [client 123.123.123.123:52554] FastCGI: server "/usr/sbin/php7.2-fpm-blackbeards.de" stderr:                   LEFT JOIN obfuscatedprefix_term_taxonomy tt ON t.term_id = tt.term_id
[Mon Jan 21 17:55:30.608441 2019] [:error] [pid 3112:tid 139647875217152] [client 123.123.123.123:52554] FastCGI: server "/usr/sbin/php7.2-fpm-blackbeards.de" stderr:                   LEFT JOIN obfuscatedprefix_jtl_connector_link_specific_value lsv ON tt.term_taxonomy_id = lsv.endpoint_id
[Mon Jan 21 17:55:30.608444 2019] [:error] [pid 3112:tid 139647875217152] [client 123.123.123.123:52554] FastCGI: server "/usr/sbin/php7.2-fpm-blackbeards.de" stderr:                 WHERE tt.taxonomy LIKE 'pa_bartoel' AND t.name = 'Mr. Burton's Bart\xc3\xb6l Classic';
[Mon Jan 21 17:55:30.608447 2019] [:error] [pid 3112:tid 139647875217152] [client 123.123.123.123:52554] FastCGI: server "/usr/sbin/php7.2-fpm-blackbeards.de" stderr:          von require('wp-blog-header.php'), wp, WP->main, WP->parse_request, do_action_ref_array, WP_Hook->do_action, WP_Hook->apply_filters, JtlConnector::capture_request, require('/path/to/plugins/woo-jtl-connector/src/bootstrap.php'), jtl\\Connector\\Application\\Application->run, jtl\\Connector\\Application\\Application->runSingl...
(Wordpress Tabellenprefix, absolute Pfade und IP-Adresse wurden aus Sicherheitsgründen geschwärzt)

Dieser Fehler wiederholt sich für jede Variante.

Versionen:
JTL- Wawi: 1.3.20.0
JTL- Connector: 1.6.3.3
Woocommerce: 3.5.3
Wordpress: 5.0.3

Mit freundlichen Grüßen,
Elias Kahl
blackbeards.de
 

joebill

Aktives Mitglied
3. November 2015
15
1
#2
Ich habe das gleiche Problem, leider konnten die Kollegen von JTL keine Lösung finden da trotz langer geduldiger Recherche Fehler nicht nachstellbar - sollte sich hier ein Ansatz auftun, wäre das natürlich auch für uns gut zu wissen.
Thumbs up,
Roland
 
26. Juli 2018
10
1
#3
Der Fehler ist auf Sonderzeichen im speziellen single quotes ( ' ) im Merkmalnamen zurückzuführen. Diese werden nicht richtig vom JTL- Connector escaped.

@Jan Weskamp
https://gitlab.jtl-software.de/jtlc...src/Utilities/SqlTraits/SpecificTrait.php#L79
Code:
$specificValueName
sollte richtig escaped werden.

@joebill
Schau mal ob du Sonderzeichen in deinen Merkmalwertten bzw. Variationsnamen hast, insbesondere single quotes ( ' ), und ersetze diese durch HTML-Entities (z.B. ' für single quotes). Das sollte den Fehler beheben.
Wenn das nicht direkt funktioniert, kann es sein, dass du die betroffenen Merkmale nochmal für den Onlineshop komplett deaktivieren und wieder aktivieren musst mit jeweils einem Abgleich dazwischen. Und anschließend evtl. auch nochmal die betroffenen Artikel inklusive Variationskombinationen für den Onlineshop deaktivieren und wieder aktivieren musst, damit die Änderungen richtig übernommen werden auch mit jeweils einem Abgleich dazwischen.
 
Zuletzt bearbeitet:

Jan Weskamp

Moderator
Mitarbeiter
19. August 2015
241
18
#4
Der Fehler ist auf Sonderzeichen im speziellen single quotes ( ' ) im Merkmalnamen zurückzuführen. Diese werden nicht richtig vom JTL- Connector escaped.

@Jan Weskamp
https://gitlab.jtl-software.de/jtlc...src/Utilities/SqlTraits/SpecificTrait.php#L79
Code:
$specificValueName
sollte richtig escaped werden.

@joebill
Schau mal ob du Sonderzeichen in deinen Merkmalwertten bzw. Variationsnamen hast, insbesondere single quotes ( ' ), und ersetze diese durch HTML-Entities (z.B. ' für single quotes). Das sollte den Fehler beheben.
Wenn das nicht direkt funktioniert, kann es sein, dass du die betroffenen Merkmale nochmal für den Onlineshop komplett deaktivieren und wieder aktivieren musst mit jeweils einem Abgleich dazwischen. Und anschließend evtl. auch nochmal die betroffenen Artikel inklusive Variationskombinationen für den Onlineshop deaktivieren und wieder aktivieren musst, damit die Änderungen richtig übernommen werden auch mit jeweils einem Abgleich dazwischen.
Hallo Blackbeards,

Dein Problem ist bei uns nicht nachstellbar in mehreren Testshops tritt kein Fehler mit solchen single quotes ( ' ) etc. auf.

error.PNG
 
26. Juli 2018
10
1
#5
Was ist denn der Rückgabewert von JtlWooCommerceConnector\Utilities\SqlTraits\SpecificTrait::getSpecificValueId() in euren Testshops?
Der Fehler in den JTL- Connector eigenen Logs zu finden lediglich im Wordpress debug.log oder, falls dieser nicht aktiv ist, entsprechend im apache2 oder nginx bzw. php-fpm error.log.
Im JTL-Connector database.log ist eindeutig fehlerhafte SQL-Syntax zu finden, die durch einen single quote im Merkmalwert entsteht:

Code:
[2019-01-23 09:17:26] database.DEBUG:
SELECT lsv.host_id , lsv.endpoint_id, t.term_id, t.name, tt.term_taxonomy_id, tt.taxonomy, t.slug
FROM obfuscatedprefix_terms t
LEFT JOIN obfuscatedprefix_term_taxonomy tt ON t.term_id = tt.term_id
LEFT JOIN obfuscatedprefix_jtl_connector_link_specific_value lsv ON tt.term_taxonomy_id = lsv.endpoint_id
WHERE tt.taxonomy LIKE 'pa_bartoel' AND t.name = 'Beyer's Oil Bartöl Eisenkraut';
                                                       ^
                                               Dieser single quote bricht die SQL Syntax bzw. schließt den String.
Falls in euren Testshops sich der Fehler tatsächlich nicht reproduzieren lässt, muss es ja trotzdem einen Grund geben, warum dieser bei mehreren Nutzern auftritt...
Gibt es irgendwelche weiteren Informationen, die wir euch geben können und die euch helfen können diesen Fehler zu beheben bzw. zu reproduzieren?
 

joebill

Aktives Mitglied
3. November 2015
15
1
#6
Bei uns liegt es nicht an Sonderzeichen - die haben wir nicht in den Merkmalen.
Ich bin ratlos. Nach dem Online Shop Abgleich von Wawi zu Woocommerce verschwinden sämtliche Variationen - besser gesagt, die für die Variationen festgelegten Eigenschaften werden anscheinend gelöscht. Füge ich die Variationseigenschaften in Woocommerce händisch im Produkt hinzu, erscheinen auch wieder die Variationen , diese sind also irgendwo richtig gespeichert, werden halt nicht "angetriggert".
Also alle händisch hinzugefügt bis zum nächsten Wawi-Onlineshop-Abgleich - danach sind dann wieder alle Variationen weg... gleiches Spiel, Eigenschaften händisch hinzugefügt, Variationen wieder da.
Alle Plugins deaktiviert, Produkte im Shop via WAWI gelöscht, neu aufgespielt via Connector - gleiches Ergebnis, Varianteneigenschaft hat keinen Wert, händisch setzen, Variante wieder da...
Hast Du einen Tipp, wer sich damit einmal beschäftigen kann??? Ich will meinen gut funktionierenden Shop nicht gleich komplett neu aufsetzen wegen dieses Zuweisungsfehlers, das würde ja Wochen dauern.
Wie gesagt, die Kollegen von JTL haben keine Lösung gefunden, konnten den Fehler nicht reproduzieren, der Connector soll einwandfrei arbeiten...
Danke, Roland
 

Jan Weskamp

Moderator
Mitarbeiter
19. August 2015
241
18
#7
Hallo joebill,

hier eine Info zu deinem Problem : https://issues.jtl-software.de/issues/CO-421.

Dein Problem hat jedoch nichts mit dem von Blackbeards zu tun.


@Blackbeards : Ich weiß nicht genau wie das da failt. Allerdings ist das bei uns nicht nachstellbar tausch doch ' mit ´ oder wäre das schlimm für euch ? Ich könnte auch den String escaped speichern, allerdings wird das dann sichtbar im Frontend angezeigt Woo ist da was eigener mit Fremd eingefügten Daten.