Gelöst Datenbank enthält inkonsistente Produkt-Übersetzungen.

  • Wenn Ihr uns das erste Mal besucht, lest euch bitte zuerst die Foren-Regeln durch.

Alexlaiho80

Neues Mitglied
28. Februar 2018
20
0
#1
Hallo Community,
wie im Titel schon steht komme ich bei der Installation nicht weiter und zwar weiß ich nicht so recht wie ich diesen Fehler beheben kann. Connector check url//integrity-check/ zeigt folgendes an:
Modified Produkt-Übersetzungen Daten-Konsistenz



Kritischer Fehler

Die Modified-Datenbank enthält inkonsistente Produkt-Übersetzungen.

Lösung

Bitte überprüfen Sie die Tabelle products_descriptions auf Einträge mit defekten Relationen zu Sprachen und/oder Produkten.



Ich nutze im Shop nur die deutsche sprache, nun hab ich mir die products_description unter phpmyadmin exportiert und bei jedem Artikel sind language_id 2 ausgefüllt und _id 1 leer.
In der exportierten csv datei habe ich in der Spalte L auch bei einigen Artikeln den Wert ,, NULL " stehen.

Hat jemand einen Lösungsansatz für mich? :)

gruß
Andreas
 

Niklas Kokoschka

Moderator
Mitarbeiter
31. Juli 2018
43
8
#2
Hi Andreas,

Wie du ja schon bemerkt hast sind inkonsistente Daten in deiner Datenbank vorhanden.

Die englischen Einträge (language_id = 1) müssen nun entfernt werden. Hierzu kannst du folgende SQL query benutzen: "DELETE FROM product_description WHERE language_id = 1;"
 

Alexlaiho80

Neues Mitglied
28. Februar 2018
20
0
#3
Hi Niklas,
danke für deinen Tip, habe es durchgeführt und es sind nun keine Artikel mit language_id 1 mehr vorhanden. Das Problem wird mir beim integrity-check leider immer noch angezeigt. Habe Cache und template geleert. :(
 

Xantiva

Sehr aktives Mitglied
28. August 2016
1.160
146
Düsseldorf
#4
Auch für die Tabelle products_descriptions? Oder für eine andere Tabelle. Die XTC-Forks haben eine Reihe von Tabellen, in denen Du noch Einträge für andere Sprachen finden kannst.
 
28. Februar 2018
20
0
#5
Ja leider ist der Fehler immer noch vorhanden, für die Products_descriptions. Nach dem Sql Befehl wurden die Dateien auch verändert bzw. habe keine Language_id 1 mehr drin
 
28. Februar 2018
20
0
#7
Verstehe nicht, wonach ich ausschau halten muß :rolleyes:
Wenn ich die exportierte CSV datei anschaue habe ich ja gar keinen Anhaltspunkt wo der Eintrag products fehlen könnte (Artikelname?)
Ich habe im Shop keine short_description, kann es daran liegen? Habe mal versucht die beiden exportierten datei beispiele anzuhängen....
 

Anhänge

Xantiva

Sehr aktives Mitglied
28. August 2016
1.160
146
Düsseldorf
#8
Die Tabellen products und products_description haben normalerweise eine "1:1"-Beziehung. Für jeden Eintrag in der products muss es auch einen Eintrag in der products_desription geben.

Schau mal, ob eine dieser beiden Abfragen Ergebnisse liefern ...
SQL:
SELECT p.products_id, pd.products_id
FROM products AS p
LEFT JOIN products_description AS pd ON(p.products_id = pd.products_id)
WHERE ISNULL(pd.products_id)
SQL:
SELECT p.products_id, pd.products_id
FROM products AS p
RIGHT JOIN products_description AS pd ON(p.products_id = pd.products_id)
WHERE isnull(p.products_id)
 

Immanuel

Moderator
Mitarbeiter
24. August 2016
265
45
#9
Die Tabellen products und products_description haben normalerweise eine "1:1"-Beziehung. Für jeden Eintrag in der products muss es auch einen Eintrag in der products_desription geben.
Das stimmt so nicht ganz: Zwischen products und products_description besteht eine 1:n Beziehung. 1 Eintrag in products kann n Einträge in products_description haben. Dabei sollte n die Anzahl der im Shop verfügbaren Sprachen sein.

@Alexlaiho80

Versuche mal bitte folgende Query (Dabei nehme ich an, dass language_id = 2 die Sprache Deutsch ist): DELETE FROM products_description WHERE language_id != 2;
 
28. Februar 2018
20
0
#10
@Xantiva


Beim 2. Befehl spuckt er mir folgendes aus
SQL:

SELECT p.products_id, pd.products_id
FROM products AS p
RIGHT JOIN products_description AS pd ON(p.products_id = pd.products_id)
WHERE isnull(p.products_id)

=
NULL9109 NULL9110 NULL9111 NULL9112 NULL9113 NULL9114 NULL9118


@Immanuel

ja language_id 2 ist Deutsch, aber mit deinem Befehl würde ich diese dann doch alle löschen? Habe ich wie du oben sehen kannst ja schon mit language_id 1 gemacht
 

Immanuel

Moderator
Mitarbeiter
24. August 2016
265
45
#11
@Alexlaiho80

Die von mir angegebene Query löscht alle Einträge, außer die mit der language_id = 2 ( != steht für ungleich ).

Mache am besten ein Backup der Tabelle products_description und führe dann mal die von mir angegebene Query aus.
 

Immanuel

Moderator
Mitarbeiter
24. August 2016
265
45
#13
Ein letzter Versuch. Bitte sei dir aber im klaren, dass alles was du machst auf eigene Gefahr geschieht. Daher solltest du in jedem Falle ein Backup der Datenbank anlegen, bevor du darin Änderungen durchführst:

DELETE d
FROM products_description d
LEFT JOIN products p ON p.products_id = d.products_id
LEFT JOIN languages l ON l.languages_id = d.language_id
WHERE (p.products_id IS NULL || p.products_id = "") || (l.languages_id IS NULL || l.languages_id = "");
 

Xantiva

Sehr aktives Mitglied
28. August 2016
1.160
146
Düsseldorf
#14
Beim 2. Befehl spuckt er mir folgendes aus
NULL9109 NULL9110 NULL9111 NULL9112 NULL9113 NULL9114 NULL9118
Dann mach ein Backup von der DB und lösche in der products_description die Einträge mit den products_id:
  • 9109
  • 9110
  • 9111
  • 9112
  • 9113
  • 9114
  • 9118
@Immanuel Du hast natürlich recht, ich meinte auch eher für Alexlaiho80, dass es immer "korrespondierende" Einträge geben muss. Also nicht wie jetzt hier: Einträge in der products_description ohne passende Einträge in der products. Das sind Überreste von Bugs im Shop, etc.
 

Ähnliche Themen