Dies ist kein Fehler
Zumindest nicht in Ihrem Code. Es ist ein Fehler in Ihrem Prozess . Ihr Projektmanager sollte sich mehr Sorgen um Ihren Prozess machen als um Ihren Code.
Wie gehst du damit um?
Ganz einfach, indem Ingenieure keine Änderungen an der Produktion oder an gemeinsam genutzten Entwicklungsdatenbanken vornehmen .
Angenommen, dies ist eine gemeinsame Entwicklungsdatenbank:
Vermeiden Sie im Idealfall, wenn überhaupt möglich, eine gemeinsam genutzte Datenbank . Verwenden Sie stattdessen Datenbanken pro Entwickler, die nur von kurzer Dauer sind. Dies sollte mit Skripten automatisiert werden, da sonst die Testkosten zu hoch werden und ein Anreiz besteht, Dinge nicht zu testen. Sie können diese Datenbanken entweder auf der Workstation des Entwicklers oder auf einem zentralen Server haben.
Wenn Sie aus irgendeinem Grund unbedingt eine gemeinsam genutzte Datenbank haben MÜSSEN, sollten Sie Fixtures verwenden - im Wesentlichen etwas, das die Datenbank jedes Mal, wenn Sie sie verwenden müssen, in einen als funktionierend bekannten Zustand versetzt. Dadurch wird vermieden, dass Entwickler von Änderungen anderer Personen gebissen werden.
Wenn Sie dauerhafte Änderungen an der Datenbank vornehmen müssen, sollten Sie diese in Ihre Quellcodeverwaltung übernehmen . Richten Sie Ihre Datenbank so ein, dass Entwickler nicht die Berechtigung haben, direkt darauf zu schreiben, und verfügen Sie über ein Programm, das Änderungen aus der Quellcodeverwaltung abruft und sie anwendet.
Nach Ihrer Beschreibung, wie Sie Dinge debuggen, hört es sich schließlich so an, als würden Sie CI nicht verwenden . Verwenden Sie CI . Es ist ein bisschen mühsam einzurichten, aber es spart auf lange Sicht SO viel Zeit, ganz zu schweigen davon, dass Sie sich über nicht reproduzierbare Datenbankfehler Sorgen machen. Sie müssen sich jetzt nur noch um Heisenbugs kümmern !
Angenommen, dies ist eine Produktionsdatenbank:
Wenn Ihre Entwickler Produktionsdatenbanken ändern, sind viele Dinge schrecklich schief gelaufen, auch wenn die Änderungen absolut korrekt sind.
Entwickler sollten niemals auf Produktionsdatenbanken zugreifen . Es gibt absolut keinen Grund und so viele Dinge, die sehr, sehr schief gehen können .
Wenn Sie etwas in einer Produktionsdatenbank reparieren müssen, sichern Sie zuerst diese Sicherung, stellen Sie sie auf einer anderen (Entwicklungs-) Instanz wieder her, und spielen Sie dann diese Entwicklungsdatenbank herum. Sobald Sie der Meinung sind, dass Sie einen Fix bereit haben (in der Quellcodeverwaltung!), Führen Sie die Wiederherstellung erneut durch, wenden den Fix an und sehen das Ergebnis. Nachdem Sie die Daten erneut gesichert haben (und im Idealfall gleichzeitige Aktualisierungen verhindert haben), reparieren Sie die Produktionsinstanz im Idealfall über einen Software-Patch.
Wenn Sie etwas in einer Produktionsdatenbank testen müssen ... nein, das tun Sie nicht. Welche Tests Sie auch durchführen müssen, sollten Sie in einer Entwicklungsinstanz durchführen. Wenn Sie Daten für die Tests benötigen, werden diese Daten dort abgerufen.