Datenbanken: MySQL, MariaDB, PostgreSQL und SQLite
Diese Seite richtet sich an Entwickler, die die Datenbank eines DXP-Projekts wählen und vorbereiten. Die DXP speichert Inhalte über Doctrine DBAL; die Anleitung des Skeletons dokumentiert vier Engines.
Inhalt
- Welche Engine
- Die Datenbank anlegen
- Das Schema installieren
- Zwischen Engines umstellen
- Nach einer Umstellung
Welche Engine
| Engine | Mindestens | Verwenden Sie sie für | Hinweise |
|---|---|---|---|
| MySQL | 8.0 | Produktion | utf8mb4 mit utf8mb4_unicode_520_ci |
| MariaDB | 10.3 (10.6 empfohlen) | Produktion | derselbe Zeichensatz |
| PostgreSQL | 14 (16 empfohlen) | Produktion | Kodierung UTF8 |
| SQLite | 3.35 | Entwicklung, Tests, Demos, Offline-Installationen | kein Server; nicht für gleichzeitige öffentliche Nutzung (SQLite für die Entwicklung) |
Der Exportweg der Anleitung zu Oracle ist "nur Export"; Oracle ist keine Engine, auf der Sie die DXP installieren.
Die Datenbank anlegen
MySQL oder MariaDB:
CREATE DATABASE exponential CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;
GRANT ALL PRIVILEGES ON exponential.* TO 'your_db_user'@'localhost';
FLUSH PRIVILEGES;PostgreSQL:
psql -U postgres -c "CREATE DATABASE exponential ENCODING 'UTF8';"Doctrine kann sie auch aus Ihren Einstellungen anlegen: php bin/console doctrine:database:create. SQLite braucht
keinen Schritt: Der Installationsbefehl legt die Datei an.
Setzen Sie dann die Datenbankvariablen in .env.local (Umgebungsvariablen).
Das Schema installieren
php bin/console exponential:install exponential-ossSpielen Sie bei späteren Aktualisierungen Datenbankänderungen mit Doctrine-Migrationen ein, nicht mit dem Installationsbefehl (Doctrine-Migrationen).
Zwischen Engines umstellen
Die Anleitung des Skeletons (Abschnitt 21) stellt ein laufendes Projekt nur mit freien Werkzeugen um:
| Von | Nach | Werkzeug in der Anleitung |
|---|---|---|
| MySQL oder MariaDB | SQLite | mysql2sqlite (MIT), per Pipe aus mysqldump |
| PostgreSQL | SQLite | pgloader |
| SQLite | MySQL oder MariaDB | sqlite3-to-mysql (Python, MIT) |
| SQLite | PostgreSQL | pgloader |
| MySQL oder MariaDB | PostgreSQL | pgloader |
| PostgreSQL | MySQL oder MariaDB | CSV-Export je Tabelle, Schema mit pgloader, Import |
| Beliebig | Oracle | nur Export |
Beispiel aus der Anleitung, MySQL nach SQLite:
mysqldump --no-tablespaces --skip-extended-insert --compact \
-u "$DATABASE_USER" -p"$DATABASE_PASSWORD" -h "$DATABASE_HOST" "$DATABASE_NAME" \
| ./mysql2sqlite - | sqlite3 var/data_dev.dbSichern Sie Datenbank, var/ und .env.local, bevor Sie beginnen, und arbeiten Sie in einem Wartungsfenster ohne
Verkehr.
Nach einer Umstellung
Die Checkliste der Anleitung (Abschnitt 21g):
- Aktualisieren Sie
.env.localmit den neuen Datenbankeinstellungen. php bin/console cache:clear(der Container speichert die Verbindung zwischen).php bin/console doctrine:schema:validate.php bin/console doctrine:migration:migrate --allow-no-migration.php bin/console exponential:reindex.- Testen Sie die Website und
/adminui/kurz durch. - Korrigieren Sie bei SQLite als Ziel die Dateiberechtigungen.
| Symptom | Ursache | Abhilfe |
|---|---|---|
| "Base table not found" | eine Tabelle wurde nicht übertragen | Schema prüfen; das Log des Konverters lesen |
| Verstümmelter Text | abweichender Zeichensatz beim Export | mit --default-character-set=utf8mb4 oder CLIENT_ENCODING=UTF8 exportieren |
| Bildvariationen liefern 404 | Zeilen in der Feldtabelle fehlen | Zeilenzahlen von Quelle und Ziel vergleichen |
Verwandte Seiten
- SQLite für die Entwicklung
- SQLite für Exponential Platform
- Datenbankverwaltung AdminNeo
- Freie Dokumentation: Diese Seite darf unter der GNU FDL 1.3 frei kopiert, übersetzt und verbessert werden.
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.