Gibt es eine Möglichkeit, die Datenbankänderungen zu erkennen, die durch Erweiterungen von Drittanbietern vorgenommen wurden?


7

Ich arbeite in einer Entwicklungs- / Staging- / Produktionsumgebung und habe einige Probleme, Code von einer Umgebung in eine andere zu fördern, insbesondere wenn Upgrades auf Joomla und andere Software von Drittanbietern erforderlich sind.

Gibt es eine Möglichkeit herauszufinden, welche SQL-Anweisungen seit einem bestimmten Datum für die Datenbank ausgeführt wurden, damit ich sie in verschiedenen Umgebungen anwenden kann, ohne jede Umgebung aktualisieren zu müssen?


Mit dieser Frage zu Stackoverflow / Superuser können Sie bessere Ergebnisse erzielen. Sie ist nicht wirklich Joomla-spezifisch.
Spunkie

Antworten:


9

Einfache Antwort ist nein.

Die erweiterte Antwort lautet: MySQL kann Abfragen protokollieren, hat jedoch Grenzen. Wenn es nur einen Unterschied zwischen den Umgebungen gibt, würde dies dazu führen, dass diese Abfragen nicht funktionieren. Trotzdem ist der einzige Weg, dies zu tun, über den Server selbst, da meines Wissens keine spezielle Protokollierung zu JDatabase hinzugefügt wurde (auch wenn eine Komponente JDatabase nicht verwendet, wird das Steuerelement noch weiter gesenkt).

Mit dem oben Gesagten können Sie in einer perfekten Welt sehen, dass es eine Möglichkeit gibt. Wenn Sie jedoch von dev zu live wechseln, hatten Sie derzeit eine Live-Site, die selbst Abfragen durchführte, und sie ist "anders" als die aktuelle dev / Staging Ausführung. Wenn sich also ein Benutzer auf der Live-Site angemeldet hat und Sie Joomla in dev aktualisiert haben, muss durch die Aktualisierung der Benutzertabelle dieser Benutzer manuell erneut hinzugefügt werden (es kann auch Änderungen an der Tabellenstruktur geben). Stellen Sie sich nun vor, es ist nicht ein Benutzer, sondern 10 oder sogar 100, und der Prozess kann nicht automatisiert werden.

Joomla verfügt über einige nette Aktualisierungsfunktionen, die eine Version für die Aktualisierung von MySQL in den Tabellen ermöglichen. Dadurch wird sichergestellt, dass die Tabellen die für die Abfragen erforderliche Struktur beibehalten. Es werden jedoch keine Einfügungen oder Aktualisierungen in den Tabellen nachverfolgt. Wenn Sie also in einer Entwicklungsumgebung aktualisieren Der beste Weg, um in der Produktion zu aktualisieren, besteht darin, die gleichen Schritte auszuführen und auch in Ihrer Produktion zu aktualisieren.

In Zukunft kann Joomla möglicherweise Datenbankänderungen in seinem Kern verfolgen, sodass Sie eine Produktionsversion mit einer Entwicklungsversion synchronisieren können. Der Arbeitsaufwand für die Erstellung einer solchen Version ist jedoch verrückt und würde sich auf die Leistung auswirken. Im Moment glaube ich nicht, dass es Pläne dafür gibt oder geben sollte.


4

Datenbanken sind in der Regel ein großes Problem bei der gesamten Softwareentwicklung. Die Synchronisierung der Dinge ist auch für uns ein großes Problem, insbesondere bei Staging- und Produktionsstandorten.

Eine Sache, die ich in letzter Zeit angefangen habe, aber noch nicht implementiert habe, ist:

http://phinx.org/

Ein anderer "schlechter Weg" besteht darin, die DB-Schemas zu exportieren (wenn Sie sich für Schemas interessieren, sind Daten wahrscheinlich ein anderes Tier) und dann für jede Datenbank einen Unterschied in den Schemas auszuführen. Sollte die Unterschiede zwischen ziemlich leicht aufdecken. Dann müssen Sie nur noch die Datenkonsolidierung durchführen. Daher würde ich sagen, dass Sie sich im Idealfall nur um Daten in Ihrer Produktionsumgebung kümmern und diese mit der Staging-Umgebung synchronisieren müssen. Dann können Sie nach Bedarf Sandboxen und in der Entwicklung herumspielen.


Ich habe den Weg des armen Mannes mit einem Diff benutzt, der langweilig sein kann, aber es war eine große Hilfe, um zu sehen, was sich geändert hat. Basierend auf der Frage klingt es so, als ob der Produktionsserver dem Entwicklungsserver voraus ist. Möglicherweise wird es an einer anderen Stelle im Workflow geglättet.
Poproar
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.