Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,075 of 9,075 pages
About the help in other languages
All help pages

Migrationen und Startdaten: .dba-Schemadateien und Pakete

Was in Exponential Migrationsklassen, Seeder und Fixtures ersetzt - datenbankneutrale .dba-Schemadateien, ezsqldumpschema und ezsqlinsertschema, ein idempotenter Installationsbefehl, Upgrade-Schritte, die Sie…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/web-framework-developers/migrations-and-dba-schema-files.md

On this page

This page is a translation. Read the English original

Migrationen und Startdaten: .dba-Schemadateien und Pakete

Diese Seite richtet sich an Entwickler, die doctrine:migrations:migrate, php artisan migrate, manage.py migrate oder rails db:migrate ausführen. Tabellen werden in datenbankneutralen .dba-Dateien beschrieben, durch Befehle angelegt und durch Upgrade-Schritte geändert, die Sie selbst schreiben und mitliefern. Inhaltsklassen und Inhalte werden mit Paketen übertragen. Seit 6.0.15 hat eine Site außerdem Migrationen, nahe an dem, was Sie kennen: Dateien YYYYMMDDHHMMSS_name.php in migrations/, der Reihe nach ausgeführt von ./console exp:migration:migrate, festgehalten in der Tabelle exp_migration, mit down() zum Zurücknehmen (Migrationen). Sagen Sie das früh im Projekt; es verändert, wie ein Release geplant wird.

Inhalt

  1. Die Bausteine
  2. Das .dba-Format
  3. Ein Schema anlegen und installieren
  4. Upgrades: Ihre eigenen Migrationsschritte
  5. Startdaten und Inhalte
  6. Im Vergleich mit Migrationswerkzeugen

Die Bausteine

BedarfExponential
Tabellen für jede Datenbank beschreibenextension/<ext>/share/db_schema.dba
Startdatensätzeextension/<ext>/share/db_data.dba
Die Tabellen anlegenezsqlinsertschema.php oder ein Installationsbefehl Ihrer Erweiterung
Schemas vergleichenezsqldiff.php
Inhaltsklassen und InhaltePakete (.ezpkg), installiert unter Setup > Pakete oder mit ezpm.php
Änderungen nach dem ersten ReleaseUpgrade-Skripte in Ihrer Erweiterung

Das .dba-Format

Eine .dba-Datei ist ein PHP-Array von Tabellen, jede mit Feldern (Typ, Länge, Standardwert, not null), Indizes und dem Primärschlüssel. Das eigene Schema des Kernels ist share/db_schema.dba, seine Daten liegen in share/db_data.dba. Die Klasse, die sie liest und schreibt, ist eZDbSchema (lib/ezdbschema/); sie erzeugt aus derselben Datei das SQL für SQLite, PostgreSQL, MySQL/MariaDB und Oracle (Datenbankschema und .dba-Dateien).

Ein Schema anlegen und installieren

Legen Sie die Tabelle in einer Entwicklungsdatenbank an und exportieren Sie dann nur Ihre Tabellen:

php bin/php/ezsqldumpschema.php --type=sqlite --table-include=expdemo_item --output-array \
  var/storage/sqlite3/exponential.db extension/expdemo/share/db_schema.dba --allow-root-user

Installieren Sie es in einer Datenbank:

php bin/php/ezsqlinsertschema.php --type=mysql --user=<user> extension/expdemo/share/db_schema.dba <database>

Besser: Geben Sie Ihrer Erweiterung einen idempotenten Befehl, der fehlende Tabellen anlegt, so wie expqueue es mit ./console ext:expqueue:install-schema tut. Ein Skript in extension/expdemo/bin/php/install-schema.php wird ohne Registrierung zu ./console ext:expdemo:install-schema (Kommandozeile).

Upgrades: Ihre eigenen Migrationsschritte

  1. Ändern Sie eine veröffentlichte Tabelle nie direkt ohne einen Upgrade-Schritt.
  2. Liefern Sie Upgrade-Schritte als nummerierte Skripte oder SQL-Dateien pro Datenbank-Engine aus (zum Beispiel in extension/<ext>/update/), und lassen Sie Ihren Installationsbefehl die fehlenden anwenden. Halten Sie in einer eigenen kleinen Tabelle oder Einstellung fest, was gelaufen ist; der Kernel führt darüber kein Buch für Sie.
  3. Fügen Sie Spalten mit Standardwerten hinzu, damit der alte Code während des Deployments weiter funktioniert.
  4. Schreiben Sie Schritte, die nach Möglichkeit nur hinzufügen, damit ein Rollback des Codes auch mit dem neuen Schema noch läuft.
  5. Prüfen Sie Datenänderungen Zeile für Zeile, nicht anhand eines Diffs: Eine .dba ist ein PHP-Array, und das Entfernen einer Zeile nummeriert den Rest neu.

Startdaten und Inhalte

StartdatenVerwendung
Zeilen Ihrer eigenen Tabellendb_data.dba neben dem Schema
Inhaltsklassen, von denen Ihr Code abhängtein Klassenpaket, das Ihr Installationsbefehl installiert; halten Sie die Bezeichner stabil (Inhaltspakete)
Demo- oder Startinhalteein Inhaltspaket oder eZContentFunctions::createAndPublishObject() mit Remote-IDs, sodass ein zweiter Durchlauf aktualisiert statt zu duplizieren
Test-Fixtureseine Wegwerf-Datenbank für Integrationstests (Testen)
php ezpm.php list --allow-root-user
php ezpm.php import var/tmp/<package>.ezpkg --allow-root-user

Im Vergleich mit Migrationswerkzeugen

Migrationswerkzeuge bietenExponential
Aus Modelländerungen erzeugte Migrationennein: Schema exportieren und den Upgrade-Schritt schreiben
up() und down()nur Upgrade-Schritte; ein Rollback ist das Zurückspielen einer Sicherung plus der vorherige Code
Eine Tabelle, die festhält, was gelaufen istführen Sie selbst, falls Sie eine brauchen
Ein Befehl für allesder Installationsbefehl Ihrer Erweiterung, im Deployment ausgeführt
Änderungen am Inhaltsmodell in MigrationenPakete und Upgrade-Schritte für Klassen

Die Deployment-Reihenfolge, die sich daraus ergibt, steht unter Server und Deployment und Eine Deployment-Pipeline.

Verwandte Seiten

Werden Sie Exponential-Partner

Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x