GORM Update-Tool löscht noch benötigte Tabellen!

Das Forum ist für das Melden von Bugs gedacht. // This forum is intended to report bugs with the APF.
Gesperrt
Benutzeravatar
jwlighting
Beiträge: 466
Registriert: 14.07.2010, 14:23:58
Wohnort: LK Oldenburg
Kontaktdaten:

GORM Update-Tool löscht noch benötigte Tabellen!

Beitrag von jwlighting » 10.03.2013, 13:29:10

Hallo zusammen,

ich bin gerade ehrlich gesagt etwas sauer. :evil:

Nach dem Update des UMGT-Moduls (alphanummerische AppProxyObjectIds) habe ich wie in der Migrationsdoku beschrieben ein Update der Datenbank mit dem Update-Tool des GORM durchgeführt.
Dabei wurden Tabellen, die nicht zum UMGT-Modul gehören, gelöscht! :roll: Defakto bedeutet das, dass man für jede GORM-Konfiguration/jedes Modul eine eigene Datenbank braucht?!
Ich verstehe ja die Logik dahinter, sehr problematisch sehe ich das trotzdem.

Ich habe jetzt erstmal ein Backup eingespielt.

Lasst uns bitte überlegen, wie man dieses Verhalten verbessern kann - oder zumindest besser darauf hinweisen!

Grüße :)
Jan

Menschen irren - Politiker sind Menschen.
Für den Norddeutschen ist 1kW = 2 Pfund Schlick.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4555
Registriert: 04.11.2007, 16:13:53

Re: GORM Update-Tool löscht noch benötigte Tabellen!

Beitrag von dr.e. » 10.03.2013, 13:54:45

Hallo Jan,
ich bin gerade ehrlich gesagt etwas sauer. :evil:
Das kann ich gut verstehen, mir würde es in dieser Situation auch so gehen. :( :roll:
Dabei wurden Tabellen, die nicht zum UMGT-Modul gehören, gelöscht! :roll: Defakto bedeutet das, dass man für jede GORM-Konfiguration/jedes Modul eine eigene Datenbank braucht?!
Nein, du kannst grundsätzlich für deine komplette Software eine Datenbank nutzen, musst jedoch nur sicher stellen, dass bei einem Update auch alle Konfigurationen geladen sind.
Lasst uns bitte überlegen, wie man dieses Verhalten verbessern kann - oder zumindest besser darauf hinweisen!
Ich weiß nicht genau, wie du deine Updates früher durchgeführt hast, jedoch hätte der Fehler nach meinem Verständnis schon vor dem Update auf die neuen Proxy-IDs auftreten müssen. Der GORM hat mit dem GenericORMapperUpdate auch schon früher die Tabellen gelöscht, die nicht relevant - weil nicht in der Konfiguration - waren.

Kannst du bitte nochmals prüfen, wie du das Update mit der alten Version vorgenommen hast?

Auf jeden Fall sollten wir jedenfalls der Doku eine Warnung spendieren, dass das automatisierte Update einer Datenbank mit Risiken behaftet ist.
Viele Grüße,
Christian

Benutzeravatar
jwlighting
Beiträge: 466
Registriert: 14.07.2010, 14:23:58
Wohnort: LK Oldenburg
Kontaktdaten:

Re: GORM Update-Tool löscht noch benötigte Tabellen!

Beitrag von jwlighting » 10.03.2013, 14:06:01

Nein, du kannst grundsätzlich für deine komplette Software eine Datenbank nutzen, musst jedoch nur sicher stellen, dass bei einem Update auch alle Konfigurationen geladen sind.
Und das mache ich wie? Afaik wird die Änderung doch direkt mit Aufruf der updateDatabase() Methode in die Datenbank geschrieben!?
Ich weiß nicht genau, wie du deine Updates früher durchgeführt hast, jedoch hätte der Fehler nach meinem Verständnis schon vor dem Update auf die neuen Proxy-IDs auftreten müssen. Der GORM hat mit dem GenericORMapperUpdate auch schon früher die Tabellen gelöscht, die nicht relevant - weil nicht in der Konfiguration - waren.
Das UMGT-Modul ist ja noch mehr oder weniger Neuland für mich - ebenso der GORM. Ich habe, wenn ich mich recht entsinne, das UpdateTool zum ersten Mal mit Tabellen mehrerer Konfigurationen in einer Datenbank verwendet.
Auf jeden Fall sollten wir jedenfalls der Doku eine Warnung spendieren, dass das automatisierte Update einer Datenbank mit Risiken behaftet ist.
Das ist der eine Schritt, ja. Ich kenne es von anderen Update-Tools so, dass vor der Ausführung der SQL-Statements eine Bestätigung durch den Benutzer unter Aufführung aller Aktionen stattfindet. Dort kann man jede Abfrage einzeln deaktivieren.
Das fände ich für das GenericORMapperManagementTool auch erstebenswert. Ein GUI drumherum zu bauen dürfte ja nicht sonderlich kompliziert sein, oder?

LG :)

Menschen irren - Politiker sind Menschen.
Für den Norddeutschen ist 1kW = 2 Pfund Schlick.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4555
Registriert: 04.11.2007, 16:13:53

Re: GORM Update-Tool löscht noch benötigte Tabellen!

Beitrag von dr.e. » 10.03.2013, 14:35:22

Hi Jan,
Und das mache ich wie? Afaik wird die Änderung doch direkt mit Aufruf der updateDatabase() Methode in die Datenbank geschrieben!?
Sowohl das bisherige GenericORMapperUpdate (bis 1.16) als auch das GenericORMapperManagementTool (ab 1.17) ermöglichen dir sowohl ein direktes Update als auch ein Ausgeben der Statements um das Update manuell durchzuführen.

Manuelles Update bis 1.16:

Code: Alles auswählen

$update = new GenericORMapperUpdate();
...
$update->updateDatabase('{CONFIG_NAMESPACE}','{CONFIG_NAME_AFFIX}','{CONNECTION_NAME}',false); 
Manuelles Update ab 1.17:

Code: Alles auswählen

$update = new GenericORMapperManagementTool();
$update->addMappingConfiguration('{CONFIG_NAMESPACE}', '{CONFIG_NAME_AFFIX}');
$update->addRelationConfiguration('{CONFIG_NAMESPACE}', '{CONFIG_NAME_AFFIX}');
$update->run(false); 
Bei beiden Tools - GenericORMapperManagementTool ist einfach eine Zusammenführung von GenericORMapperSetup und GenericORMapperUpdate wir auf der http://wiki.adventure-php-framework.org/de/Roadmap aufgeführt - musst du jeweils ein false übergeben.
Das UMGT-Modul ist ja noch mehr oder weniger Neuland für mich - ebenso der GORM. Ich habe, wenn ich mich recht entsinne, das UpdateTool zum ersten Mal mit Tabellen mehrerer Konfigurationen in einer Datenbank verwendet.
OK, dann ist klar, warum das nicht schon früher passiert ist.
Das ist der eine Schritt, ja. Ich kenne es von anderen Update-Tools so, dass vor der Ausführung der SQL-Statements eine Bestätigung durch den Benutzer unter Aufführung aller Aktionen stattfindet. Dort kann man jede Abfrage einzeln deaktivieren.
Das fände ich für das GenericORMapperManagementTool auch erstebenswert. Ein GUI drumherum zu bauen dürfte ja nicht sonderlich kompliziert sein, oder?
Ich denke auch, dass das eine sehr schöne und vor allem komfortable Lösung ist. Schlage daher vor das auf die Roadmap von 1.18 zu setzen.

Welche APF-Version setzen du aktuell ein? Brauchst du noch Hilfe für das Automatisieren des Updates?
Viele Grüße,
Christian

Benutzeravatar
dave
Beiträge: 903
Registriert: 04.02.2011, 19:03:57
Wohnort: Berlin
Kontaktdaten:

Re: GORM Update-Tool löscht noch benötigte Tabellen!

Beitrag von dave » 10.03.2013, 18:28:59

dr.e. hat geschrieben: Auf jeden Fall sollten wir jedenfalls der Doku eine Warnung spendieren, dass das automatisierte Update einer Datenbank mit Risiken behaftet ist.
Diesen Hinweis gibt es bereits.
Große Datenbanken sollten keinesfalls automatisiert aktualisiert werden!
Daher lasse ich mir zu einem Update auch alles nur ausgeben und füge das dann manuell über phpMyAdmin ein. Damit kann nichts kaputt gehen.

Megger
Beiträge: 1233
Registriert: 04.11.2008, 10:57:37

Re: GORM Update-Tool löscht noch benötigte Tabellen!

Beitrag von Megger » 11.03.2013, 11:39:39

Und das mache ich wie? Afaik wird die Änderung doch direkt mit Aufruf der updateDatabase() Methode in die Datenbank geschrieben!?
Du kannst vor dem updateDatabase() noch per addMappingConfiguration() und addRelationConfiguration() andere Konfigurationen zusätzlich laden, sodass diese auch berücksichtigt werden!
Aber im Grunde ist ein ausgeben der Datenbank Befehle und manuelles abarbeiten zeitaufwändiger, dafür allerdings um einiges kontrollierbarer
Tutorial: Browsergame mit dem APF (Die ersten Parts handeln von Installation und Inbetriebnahme des APFs, deswegen sicherlich auch für alle Nicht-Browsergame-Programmierer interessant)

APF-Version
  • Entwicklung: 2.0
  • Produktiv: 1.15

Benutzeravatar
jwlighting
Beiträge: 466
Registriert: 14.07.2010, 14:23:58
Wohnort: LK Oldenburg
Kontaktdaten:

Re: GORM Update-Tool löscht noch benötigte Tabellen!

Beitrag von jwlighting » 11.03.2013, 12:12:20

Ich fasse mal für mich zusammen, was ich jetzt draus gelernt habe: ;)
  • Updates immer manuell ausführen und Statements anzeigen lassen.
  • Hinweis verbessern und eine GUI erstellen.
  • Weitere Konfigurationen, die nicht betroffen sind, laden.
Du kannst vor dem updateDatabase() noch per addMappingConfiguration() und addRelationConfiguration() andere Konfigurationen zusätzlich laden, sodass diese auch berücksichtigt werden!
Danke, die Information fehlte mir.
Diesen Hinweis gibt es bereits.
Große Datenbanken sollten keinesfalls automatisiert aktualisiert werden!
:lol: Definiere "große Datenbanken"... Was ich da hatte ist nun wirklich keine große Datenbank gewesen. Keine 30 Tabellen und weniger als 100 Datensätze. ;)
Sowohl das bisherige GenericORMapperUpdate (bis 1.16) als auch das GenericORMapperManagementTool (ab 1.17) ermöglichen dir sowohl ein direktes Update als auch ein Ausgeben der Statements um das Update manuell durchzuführen.
Diese Möglichkeit war mir bereits bekannt. Mein Fehler war, in blindem Vetrauen das Update automatisch durchführen zu lassen.
Ich denke auch, dass das eine sehr schöne und vor allem komfortable Lösung ist. Schlage daher vor das auf die Roadmap von 1.18 zu setzen.
Welche APF-Version setzen du aktuell ein? Brauchst du noch Hilfe für das Automatisieren des Updates?
Sehr schön. Ich werde dann schauen, ob ich mich an der Entwicklung der GUI beteiligen kann.
Derzeit verwende ich Version 1.17 aus dem SVN, allerdings nicht überall den neusten Stand. Mit dem Release von 1.17 werde ich dann nochmal alles updaten.

LG :)
Jan

Menschen irren - Politiker sind Menschen.
Für den Norddeutschen ist 1kW = 2 Pfund Schlick.

Megger
Beiträge: 1233
Registriert: 04.11.2008, 10:57:37

Re: GORM Update-Tool löscht noch benötigte Tabellen!

Beitrag von Megger » 11.03.2013, 13:07:33

Bei einer GUI könnte man es auch so umsetzen, dass zuerst angezeigt wird, was gemacht werden soll und man dies erst noch einmal bestätigen muss! Dadurch hätte man trotzdem noch ein ziemlich automatisches System und trotzdem keine Probleme mit auf einmal gelöschten Tabellen
Tutorial: Browsergame mit dem APF (Die ersten Parts handeln von Installation und Inbetriebnahme des APFs, deswegen sicherlich auch für alle Nicht-Browsergame-Programmierer interessant)

APF-Version
  • Entwicklung: 2.0
  • Produktiv: 1.15

Benutzeravatar
jwlighting
Beiträge: 466
Registriert: 14.07.2010, 14:23:58
Wohnort: LK Oldenburg
Kontaktdaten:

Re: GORM Update-Tool löscht noch benötigte Tabellen!

Beitrag von jwlighting » 11.03.2013, 13:46:03

Genau das war ja die Idee:

Jedes Statement wird angezeigt und kann mit einer Checkbox deaktiviert/aktiviert werden. Mit dem Absenden des Formulars werden die aktiven Statments dann ausgeführt.

LG :)
Jan

Menschen irren - Politiker sind Menschen.
Für den Norddeutschen ist 1kW = 2 Pfund Schlick.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4555
Registriert: 04.11.2007, 16:13:53

Re: GORM Update-Tool löscht noch benötigte Tabellen!

Beitrag von dr.e. » 11.03.2013, 21:57:07

Hallo zusammen,

ich habe dieses Thema unter http://wiki.adventure-php-framework.org ... rsion_1.18 auf die Roadmap gesetzt. Freue mich schon auf Vorschläge zur Umsetzung.
Viele Grüße,
Christian

Gesperrt

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast