Updateproblem: Datenbank-Update-Fehlermeldung

 Update von 5.2.27 auf 5.3.1: {**"valid":false,"errorMsg":"Could not apply migration (Migrations\_Migration907). Error: SQLSTATE[42S01]: Base table or view already exists: 1050 Table 's\_order\_basket\_signatures' already exists "**}

Was genau hat das zu bedeuten, bzw. wie kann ich das reparieren?

Leere Tabelle, soll ich die einfach löschen?

Das bedeutet, dass schon Tabellen in deinem Shops existieren, die es erst mit 5.3 gibt. Da ist in der Vergangenheit schon mal was schief gelaufen.

Vermutlich nicht das einzige Problem dann.

Du kannst du Tabelle sicher versuchen zu entfernen. Eigentlich müsste man aber im Detail prüfen, warum es die schon gibt und was sonst noch so fehlerhaft ist. Sonst bekommst du später evtl. Folgefehler

Sebastian

1 „Gefällt mir“

Schau mal hier: https://forum.shopware.com/discussion/comment/202241/#Comment_202241

Wahrscheinlich gab es schonmal ein Update und du hast ein Backup eingespielt. Viele Hoster kopieren dann die daten einfach zurück und neu angelegte Tabellen die nicht im Backup enthalten sind, bleiben einfach in der Datenbank. Am besten kannst du Backups immer in eine leere Datenbank einspielen.

Habe ein Update auf 5.3.1 erfolgreich durchgeführt gehabt, dann aber gesehen, das die mühevoll angelegten Custom Products verschwunden sind;

also wieder die WebSeiten- und Datenbank-Sicherheitskopie von gestern mit 5.2.27 eingespielt. Das System läuft dann (veraltet) normal. 

Bloß das Update scheitert seit dem. 

Was soll ich machen?

Müsste reichen, wenn du die verlinkten Tabellen löschst.

Aber am besten vorher mal ein Testsystem aufsetzen und updaten.

1 „Gefällt mir“

OK - danke - Tabelle gelöscht - einen Schritt weiter, jetzt kommt:

 

"Error

**Received the following error message:
Could not apply migration (Migrations_Migration917). Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry ‘1’ for key ‘PRIMARY’ 

Please try to fix this error and restart the update.**

Response

**{"valid":false,"errorMsg":"Could not apply migration (Migrations\_Migration917). Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1' for key 'PRIMARY' "}"**

Um welche Tabelle handelt es sich, bzw. auf welche Tabelle bezieht sich die Fehlermeldung?

Habe den Datenbankinhalt ganz gelöscht und anschließend die Sicherheitskopie reingespielt, jetzt funkt es …

@SebastianKlöpper schrieb:

Das bedeutet, dass schon Tabellen in deinem Shops existieren, die es erst mit 5.3 gibt. Da ist in der Vergangenheit schon mal was schief gelaufen.

Vermutlich nicht das einzige Problem dann.

Du kannst du Tabelle sicher versuchen zu entfernen. Eigentlich müsste man aber im Detail prüfen, warum es die schon gibt und was sonst noch so fehlerhaft ist. Sonst bekommst du später evtl. Folgefehler

Sebastian

 

Hallo Sebastian (oder wer anderes von swag),

warum macht Shopware hier keinen Gebrauch von der einfachen Abfrage CREATE TABLE IF NOT EXISTS… ?

Damit wären doch die meisten Upgrade-Probleme hier gelöst, oder?

Eine andere Möglichkeit wäre auch über PHP zunächst die Datenbank auf Konsistenz zu prüfen und den USER zu benachrichten, das etwas nicht stimmt, BEVOR man das Upgrade durchführt. Das wäre IMHO besser als den Shop womöglich komplett zu schrotten … ! Ich finde das ehrlich gesagt etwas unprofessionell. Oder gibt es hier einen anderen Hintergrund, den ich (noch) nicht kenne?

LG

(gleich) mahlzeit :slight_smile:

 

 

Hi,

das stellt aber auch nicht wirklich sicher, ob die Datenbankänderung vollständig / sauber durchgeführt wurde. Es gibt ja nicht nur Create, sondern auch komplette Migrationsaufgaben und Änderungsvorgänge usw.
Shopware speichert / loggt ja genau mit, welche Datenbankänderungen durch Updates gemacht wurden. Daher führt Shopware immer nur die Änderungen aus, die noch nicht vorhanden sind.

Das einzige Problem an dieser ganzen Sache ist ja nur, wenn das Backup nicht richtig zurückgespielt wurde. Nur dann treten Probleme auf. Bei einem Backup muss die aktuelle Datenbank halt vorher geleert werden. Man darf ein Backup niemals über eine bestehende Datenbank drüber kopieren. Beachtet man das, sind 99,9% alle Probleme gar nicht erst existent. So hat man u.U. immer irgendwelche fehlerhaften Stände und auch das kann zu Folgeproblemen führen. Nur der aktuelle Weg kann das praktisch vollständig gewährleisten, vernünftige Datenbank-Strukturen zu haben. Alles andere wäre im Fehlerfall kaum prüfbar.

Sebastian

PS: Dein genannter Weg wird auch i.d.R. bereits genutzt shopware/926-add-emotion-presets.php at 5.3 · shopware/shopware · GitHub
Es gibt aber viele Updates / Änderungen, wo sowas einfach auch nicht geht oder sinnvoll ist.