Ergebnis 1 bis 3 von 3

Thema: Best Practice: Migrationsscript mit Schemaänderungen im DCA harmonisieren

  1. #1
    Contao-Nutzer Avatar von chatjack
    Registriert seit
    02.09.2012.
    Ort
    Essen
    Beiträge
    181

    Lachendes Gesicht Best Practice: Migrationsscript mit Schemaänderungen im DCA harmonisieren

    Hallo zusammen,

    gibt es die Möglichkeit, in einem eigenen Bundle ein Migrationsscript so zu registrieren, dass es nach dem aktualisieren des Schemas ausgeführt wird, aber vor dem Löschen von Spalten und Tabellen, wenn man die Option "Alle Änderungen inklusive Löschungen anwenden." im Tag-Manager angehakt hat?

    Mit dem neuen Major Relase meines Bundles hat sich vieles an der Datenbank-Struktur geändert. Die Tabelle "tl_gs_home" gibt es nicht mehr. Stattdessen liegen die Daten jetzt in "tl_gs_address".

    Ein Migrations-Script sorgt dafür, dass die Daten von "tl_gs_home" in "tl_gs_address" verschoben werden. Wenn das Häkchen nicht gesetzt ist, funktioniert das Migrations-Script tadellos. Wenn das Häkchen gesetzt wurde, sind die Daten weg, da "tl_gs_home" gelöscht wurde, bevor das Migrationsscript hier greift. Man kann das Problem theoretisch umgehen, wenn man es über die Kommandozeile oder über zwei Anläufe im Contao-Manager macht.

    contao:migrate --schema-only <-- Legt die neue Tabelle an
    contao:migrate --migrations-only <-- Schiebt die Daten von alter Tabelle in neue Tabelle
    contao:migrate --schema-only --with-deletes <-- Löscht die alte Tabelle

    Nun wird es im Eifer des Gefechts aber sicher dennoch passieren, dass man mal ein Update mit "--with-deletes" ausführt, wodurch die Daten dann gleich weg wären.

    Gibt es hier eine Möglichkeit, die Migration vor dem Löschen auszuführen, oder führt kein Weg daran vorbei, die alte Tabelle in der Datenbank zu behalten?

    Danke und LG

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    37.158
    Partner-ID
    10107

    Standard

    Du musst in deiner Migration selbst die Tabelle anlegen. Vorsicht: nutze dazu die entsprechenden Doctrine Abstraktionen, anstatt direkt CREATE TABLE auszuführen (siehe https://github.com/contao/contao/pull/8165).
    » sponsor me via GitHub or Revolut

  3. #3
    Contao-Nutzer Avatar von chatjack
    Registriert seit
    02.09.2012.
    Ort
    Essen
    Beiträge
    181

    Standard

    Vielen Dank für den Tipp! Genau so werde ich es machen.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •