Projekt

Allgemein

Profil

Aktionen

GX-Bug #59281

geschlossen

Wiederherstellung eines DB Backups ist unter PHP 7.2 nicht möglich

Von Mirko Janssen vor etwa 6 Jahren hinzugefügt. Vor fast 6 Jahren aktualisiert.

Status:
Erledigt
Priorität:
Dringend
Zugewiesen an:
Tobias Schindler
Kategorie:
Adminbereich
Zielversion:
% erledigt:

100%

Geschätzter Aufwand:
Steps to reproduce:
Betroffene Versionen:
3.11.3.0
Release Notes Langtext:

Wiederherstellung eines DB Backups ist unter PHP 7.2 wieder zuverlässig möglich

Tags:
Fix

Beschreibung

Bei der Sicherung der Datenbank über "Toolbox > Datenbanksicherung" werden die einzelnen Datenbanktabellen einzeln gesichert und letztlich werden alle Datenbanktabellen das gezippt. Bei der Wiederherstellung des Backups wir das erstellte Zip-Archiv wieder entpackt und die einzelnen SQL-Dateien mit der gesicherten Datenbank werden Datei- und Zeilenweise verarbeitet. Erfolgt die Verarbeitung einer SQL-Datei nicht innerhalb eines gewissen Zeitraums (Timeout des Ajax-Requests), wird an dieser Stelle fortgesetzt.

Unter PHP 7.2 kommt es jedoch zu der Problematik, dass z.B. die "language_phrases_cache" Tabelle auf Grund der vielen Datensätze nicht komplett verarbeitet werden kann. Bei einem erneuten Anstoss der Verarbeitung liegt dann für die Anwendung, welche die Verarbeitung fortsetzen soll, dann nur ein Teil der "language_phrases_cache" Datensätze vor. Dies ist fatal, da diese Datensätze zur Laufzeit der besagten Anwendung verwendet werden, um Konstanten in PHP zu definieren. Wenn also nicht alle Datensätze in der Tabelle vorliegen, können nicht alle notwendigen Konstanten definiert werden, was zur Folge hat, PHP 7.2 hier Warnings ausgibt.


Aktionen #1

Von Daniel Wu vor etwa 6 Jahren aktualisiert

  • Zugewiesen an wurde auf Julian Heckmann gesetzt
Aktionen #2

Von Timo Backhaus vor etwa 6 Jahren aktualisiert

src/system/classes/db_backup/DBBackupControl.inc.php

if( $c_import_runnning && ( trim( $t_line ) == 'DROP TABLE IF EXISTS configuration;' || trim( $t_line ) == 'DROP TABLE IF EXISTS gm_configuration;') )

Hier muss die Tabelle "language_phrases_cache" hinzugefügt werden, damit an dieser Stelle der Ajax Request erneut gestartet wird.

Aktionen #3

Von Timo Backhaus vor etwa 6 Jahren aktualisiert

  • Tags wurde auf Fix gesetzt
Aktionen #4

Von Daniel Wu vor fast 6 Jahren aktualisiert

  • Zugewiesen an Julian Heckmann wurde gelöscht
Aktionen #5

Von Jonatas Fischer vor fast 6 Jahren aktualisiert

  • Status wurde von Gemeldet zu In Bearbeitung geändert
  • Zugewiesen an wurde auf Jonatas Fischer gesetzt
Aktionen #6

Von Jonatas Fischer vor fast 6 Jahren aktualisiert

  • Status wurde von In Bearbeitung zu Testing geändert
  • Zugewiesen an wurde von Jonatas Fischer zu Core-Entwickler geändert
  • Zielversion wurde von 133 zu 3.12.0.0 beta1 geändert
  • Release Notes Langtext aktualisiert (Vergleich)
  • Betroffene Versionen 3.11.3.0 wurde hinzugefügt
  • Betroffene Versionen Unbestimmt wurde gelöscht

The error can't be reproduced except you have a big database and it happens when the ajax request timeout happens in the middle of the restore of the "language_phrases_cache" table.

Aktionen #8

Von Tobias Schindler vor fast 6 Jahren aktualisiert

  • Status wurde von Testing zu Erledigt geändert
  • Zugewiesen an wurde von Core-Entwickler zu Tobias Schindler geändert
  • % erledigt wurde von 0 zu 100 geändert
Aktionen

Auch abrufbar als: Atom PDF