ich wollte gern auf die aktuelle Version updaten aber leider erhalte ich immer eine Datenbank Fehlermeldung. Ich hatte diese Meldung bereits beim versuch auf die Version 6.4 upzudaten und habe dann gehofft, dass es ein Bug in der Version ist, der mit 6.4.1 behoben wird. Leider ist dem nicht so.
Dies ist die Fehlermeldung, die ich erhalte:
Error
Received the following error message:
An exception occurred while executing ‚ALTER TABLE media_tag DROP FOREIGN KEY fk.media_tag.id;‘: SQLSTATE[42000]: Syntax error or access violation: 1091 Can’t DROP ‚fk.media_tag.id‘; check that column/key exists
Please try to fix this error and restart the update.
Response
{„valid“:false,„errorMsg“:„An exception occurred while executing ‚ALTER TABLE media_tag DROP FOREIGN KEY fk.media_tag.id;‘:\n\nSQLSTATE[42000]: Syntax error or access violation: 1091 Can’t DROP ‚fk.media_tag.id‘; check that column/key exists“}
Ich habe mir die Datenbank angeschaut und es ist korrekt, dass es diesen Key nicht gibt. Ich habe dann auch mal ein neues Shopware 6.3.5 aufgesetzt, um zu sehen wie die Datenbank dort aussieht, aber in dem Punkt ist sie mit meiner identisch.
Hat jemand eine Idee, wie ich diesen Fehler beheben kann?
Falls er nicht da ist gibt es ein Problem, weil das Update Skript den Constraint entfernen will ohne zu prüfen, ob er da ist. Ein Hack wäre, den Constraint von Hand hinzuzufügen, damit das Update Skript den wieder entfernen kann:
ALTER TABLE media_tag
ADD CONSTRAINT fk.media_tag.id
FOREIGN KEY (media_id) REFERENCES media (id);
Ob das bei den vorhandenen Tabelleneinträgen funktioniert kann ich nicht sagen, muss man ausprobieren.
Danke für die schnelle Antwort. Ich habe mal deinen ersten Befehl ausgeführt und erhalte folgendes zurück:
media_tag CREATE TABLE media_tag ( media_id binary(16)…
Wenn ich versuche es über deinen Befehl anzulegen, erhalte ich folgende Meldung #1102 - Unerlaubter Datenbankname 'fk'
Leider kenne ich mich nicht wirklich mit SQL aus und bin echt ratlos.
Nach dem Einloggen in die DB: use datenbankname; wobei datenbankname der Name der Datenbank ist, die bei der Shopware Installation angegeben wurde. Den Datenbankname sieht man in der Datei .env im Installationsverzeichnis. Es ist das letzte Wort in der Zeile DATABASE_URL=....
Den Befehl SHOW CREATE TABLE media_tag; ausführen. Im Output nach der Zeile CONSTRAINT fk.media_tag.id FOREIGN KEY (media_id) REFERENCES media (id)
suchen.
Fall diese Zeile nicht da ist, diesen Befehl ausführen: ALTER TABLE media_tag ADD CONSTRAINT fk.media_tag.id FOREIGN KEY (media_id) REFERENCES media (id);
Dabei beziechnet fk.media_tag.idden Namen des Constraint, fk steht für Foreign Key (nicht für den Datenbanknamen)
Es hat jetzt soweit alles funktioniert und das Update ist durchgelaufen. Ich habe allerdings einen anderen Weg genommen. Ich habe die entsprechenden Tabellen (media_tag und customer_tag) gelöscht und aus meiner Testdatenbank eingefügt.
Das war vermutlich nicht so schlau, da ich jetzt keine Produkte mehr sehe. Die Produkte sind zwar noch in der Datenbank, aber sie werden nicht im Backend oder Frontend angezeigt.
Hat dazu noch jemand eine Idee? Sonst muss ich das Backup zurückspielen.
Okay dann mache ich das mal. Offenbar ist mit der Datenbank irgendetwas richtig schief gelaufen. Ich überlege gerade ein komplett frisches Shopware aufzusetzen. Gibt es eine Möglichkeit, die Daten von Shopware 6 zu Shopware 6 zu migrieren? Ich habe leider bisher nur die Migration von Shopware 5 auf Shopware 6 gesehen.
du kannst im Admin-Panel unter Einstellungen > Shop > Import/Export deine Produkte exportieren (auch mit zusätzlichen Daten) und diese dann in der frischen Installation importieren. Hier müsstest du aber beachten, dass du auch alle notwendigen Exporte durchführst und (das kann ich so nicht sagen) alle relevanten Felder exportiert werden - dies müsste unter „Profile“ geprüft werden. Sollten Felder fehlen, dann müssen diese durch die Bearbeitung des Profils hinzugefügt werden. Das ist so oder so sehr tedious und eine Menge Arbeit.
Export: Kategorien, Produkte, Varianten, Eigenschaften und Medien
Beim Import zuerst die Kategorien und Produkte einfügen, bevor der Rest hinzugefügt wird.
Alternativ kannst du von deiner Datenbank ein Backup machen und alle produktrelevanten Tabellen exportieren und dann bei der neuen Datenbank importieren. Ob das so 1:1 funktioniert, kann ich dir nicht sagen, da ich es nicht selbst geprüft habe. Shopware hat auf DB-Ebene viele Zwischentabellen, IDs und Vermerke völlig querbeet verteilt, weshalb es auch da Probleme geben könnte.
Im schlimmsten Fall bleibt nur noch das qualvolle Abtippen - das könntest du vielleicht umgehen, wenn du deinen Testshop zum Liveshop umfunktionierst und umgekehrt - dann musst du dort lediglich die Produkte nachpflegen (je nach Aktualität des Datenbestands).
Ich kann dir leider keine Garantie für das Funktionieren meiner Ideen geben, aber vielleicht reichen dir auch schon die Impulse, um den richtigen Weg zu finden.
Danke, dass habe ich gestern auch gesehen, aber leider bekomme ich keine Verbindung zwischen den beiden Systemen. Ich erhalte immer die Fehlermeldung: Es konnte keine Verbindung zum angegebenen Server hergestellt werden. Bitte überprüfe die angegebene Shop-Domain.
Ich habe die Integration im alten Shop angelegt und im neuen Shop eingetragen. Die Domain sollte auch korrekt sein aber es klappt leider nicht.
Ja ich habe ein Ticket bei Shopware aufgemacht und folgende Antwort erhalten: Wie der Dokumenation zu entnehmen ist, ist die Migration aktuell nur von einer bestehenden Shopware 6.4.x Installation zu einer anderen Shopware 6.4.x Installation möglich.
Die Möglichkeit 6.3 zu 6.3/6.4 zu migireren wird zeitnah nachgeliefert, aus diesem Grund wurde das Migrationsprofil nur schon mit „>=6.3.0.0“ benannt.
Wir müssen also leider noch warten und hoffen, dass die Möglichkeit bald zur Verfügung steht.