Ist das tatsächlich so und soll das so bleiben? Unser Produkt, das diesen Fehler auswirft (wie viele andere Produkte auch), hat auch Leerzeichen, aber wir können das unmöglich ändern - das wird dann unlesbar. In JTL kann man Variationen mit Leerzeichen anlegen, in Shopify auch - hört sich nach einem Connector Bug an.
Hi
@rpe,
kann die Aussage von
@Svenka bestätigen.
Ursache überall: Leerzeichen am Anfang oder Ende von Variationswerten in JTL.
Shopify trimmt diese serverseitig, der
Connector versucht sie aber als „neuen" Wert zu pushen → Crash. Leerzeichen innerhalb eines Wertes (z. B. „Dunkel Blau") sind unproblematisch.
Anbei eine kleine Anleitung, falls jemand das gleiche Problem hat - damit lassen sich die betroffenen Variationen schnell finden und sauber bereinigen.
(Getestet mit
JTL-Wawi 1.11.7)
Schritt 1: So findest du die betroffenen Artikel:
- Anzahl prüfen (Wert & Name)
SQL:
SELECT 'Werte' AS Quelle, COUNT(*) AS Anzahl
FROM tEigenschaftWertSprache
WHERE cName LIKE ' %' OR cName LIKE '% '
UNION ALL
SELECT 'Namen', COUNT(*)
FROM tEigenschaftSprache
WHERE cName LIKE ' %' OR cName LIKE '% ';
- Variationswerte mit Leerzeichen (alle Sprachen, alle Artikel)
SQL:
SELECT
a.cArtNr,
es.cName AS Variation,
ews.cName AS Wert,
DATALENGTH(ews.cName) AS Bytes_aktuell,
DATALENGTH(LTRIM(RTRIM(ews.cName))) AS Bytes_getrimmt,
ews.kSprache,
ews.kEigenschaftWert
FROM tArtikel a
JOIN tEigenschaft em ON em.kArtikel = a.kArtikel
JOIN tEigenschaftWert emw ON emw.kEigenschaft = em.kEigenschaft
JOIN tEigenschaftWertSprache ews ON ews.kEigenschaftWert = emw.kEigenschaftWert
JOIN tEigenschaftSprache es ON es.kEigenschaft = em.kEigenschaft
AND es.kSprache = ews.kSprache
WHERE ews.cName LIKE ' %' OR ews.cName LIKE '% '
ORDER BY a.cArtNr, ews.kSprache;
- Variationsnamen mit Leerzeichen (z.B. „Farbe ")
SQL:
SELECT
a.cArtNr,
es.cName AS Variation,
DATALENGTH(es.cName) AS Bytes_aktuell,
DATALENGTH(LTRIM(RTRIM(es.cName))) AS Bytes_getrimmt,
es.kSprache,
es.kEigenschaft
FROM tArtikel a
JOIN tEigenschaft em ON em.kArtikel = a.kArtikel
JOIN tEigenschaftSprache es ON es.kEigenschaft = em.kEigenschaft
WHERE es.cName LIKE ' %' OR es.cName LIKE '% '
ORDER BY a.cArtNr, es.kSprache;
Schritt 2: Bereinigen / Update
Manuell in der Wawi: Geht problemlos für einzelne Artikel. Bei Artikeln mit aktivem eBay-Angebot ist das Bearbeiten der Variationen allerdings blockiert.
Per SQL: Sinnvoll bei vielen Treffern oder wenn eBay-Angebote im Weg stehen.
Vorher Backup ziehen, Anwendung auf eigene Verantwortung. Wer mit SQL nicht sicher unterwegs ist: nicht ausführen oder
Servicepartner einbinden.
Garantie/Haftung übernehmen wir keine.
- Einzeln pro Artikel (tEigenschaftWertSprache eintragen aus der Abfrage Schritt 1)
SQL:
UPDATE tEigenschaftWertSprache
SET cName = LTRIM(RTRIM(cName))
WHERE kEigenschaftWert = 1000
AND (cName LIKE ' %' OR cName LIKE '% ');
- Mehrere auf einmal (tEigenschaftWertSprache eintragen aus der Abfrage Schritt 1)
-> Wenn du mehrere Artikel nacheinander durchgehen willst, kannst du die Updates auch zu einem Batch zusammenfassen — z.B. für alle aus deiner Liste auf einmal:
SQL:
UPDATE tEigenschaftWertSprache
SET cName = LTRIM(RTRIM(cName))
WHERE kEigenschaftWert IN (1000, 1001, 1002, 1003)
AND (cName LIKE ' %' OR cName LIKE '% ');
- Alle auf einmal (alle betroffenen Artikel und Variationen, ohne Filter)
SQL:
UPDATE tEigenschaftWertSprache
SET cName = LTRIM(RTRIM(cName))
WHERE cName LIKE ' %' OR cName LIKE '% ';
→ Was gemacht wird:
- Geht nur an Zeilen, die ein Leerzeichen am Anfang oder Ende haben (alles andere unberührt)
- Trimmt mit LTRIM(RTRIM()) ausschließlich diese Leerzeichen
- Ändert keine anderen Inhalte, löscht nichts, fügt nichts hinzu
- Wirkt auf alle Sprachen (kein kSprache-Filter) — gewollt, weil Leerzeichen in jeder Sprache stören
- Reine String-Bereinigung
→ Was „kaputt" gehen könnte (theoretisch) — gilt für beide SQLs (Bereinigung Namen und Werte über SQL):
- Wert besteht NUR aus Leerzeichen (z. B. „ ") → würde zu Leerstring „"
- Andere Schnittstellen (eBay, Amazon, JTL-Shop) bekommen beim nächsten Abgleich die getrimmten Werte. Bisher hat dies keine Fehler verursacht.
- OPTIONAL: Auch Variationsnamen (nicht nur Werte) bereinigen. Falls deine SELECT-Query (Abfrage Schritt 1) Treffer hatte bei Variationsnamen:
SQL:
UPDATE tEigenschaftSprache
SET cName = LTRIM(RTRIM(cName))
WHERE cName LIKE ' %' OR cName LIKE '% ';
Schritt 3: Verifizieren
- Die Abfrage (gleiche wie am Anfang) muss 0 ergeben
SQL:
SELECT 'Werte' AS Quelle, COUNT(*) AS Anzahl
FROM tEigenschaftWertSprache
WHERE cName LIKE ' %' OR cName LIKE '% '
UNION ALL
SELECT 'Namen', COUNT(*)
FROM tEigenschaftSprache
WHERE cName LIKE ' %' OR cName LIKE '% ';
Viele Grüße
Franz