Questo non è un bug
Almeno non sul tuo codice. È un bug nel tuo processo . Il tuo project manager dovrebbe essere molto più preoccupato per il tuo processo che per il tuo codice.
come lo gestisci?
Molto semplicemente, non permettendo agli ingegneri di modificare i database di produzione o di sviluppo condivisi .
Supponendo che questo sia un database di sviluppo condiviso:
Idealmente, se possibile, evita innanzitutto di avere un database condiviso . Invece, hanno database per sviluppatori di breve durata. Questo dovrebbe essere automatizzato con gli script, altrimenti il costo per testare diventa troppo grande e c'è un incentivo a non testare le cose. È possibile disporre di questi database sulla workstation dello sviluppatore o su un server centrale.
Se, per qualche motivo, DEVI assolutamente avere un database condiviso, dovresti usare gli infissi - in sostanza, qualcosa che imposta il database su uno stato buono ogni volta che devi usarlo. Questo evita che gli sviluppatori vengano morsi dai cambiamenti degli altri.
Se è necessario applicare modifiche permanenti al database, è necessario impegnarle nel controllo del codice sorgente . Configura il tuo database in modo tale che gli sviluppatori non dispongano dell'autorizzazione per scrivere direttamente su di esso e dispongano di un programma che estrae le modifiche dal controllo del codice sorgente e le applica.
Infine, dalla tua descrizione su come stai eseguendo il debug delle cose, sembra che non stai usando CI . Usa CI . È un po 'una seccatura da configurare, ma farà risparmiare molto tempo a lungo termine, per non parlare del fatto che ti impedisce di preoccuparti di bug di database non riproducibili. Adesso dovrai solo preoccuparti degli heisenbugs !
Supponendo che questo sia un database di produzione:
Se i tuoi sviluppatori stanno cambiando i database di produzione, molte cose sono andate terribilmente storto, anche se le modifiche sono assolutamente corrette.
Gli sviluppatori non dovrebbero mai accedere ai database di produzione . Non c'è assolutamente alcun motivo per farlo, e così tante cose che possono andare molto molto male.
Se è necessario correggere qualcosa in un database di produzione, eseguire prima il backup, ripristinare quel backup su un'istanza diversa (sviluppo) e quindi giocare attorno a quel database di sviluppo. Una volta che pensi di avere una correzione pronta (sul controllo del codice sorgente!), Esegui nuovamente il ripristino, applica la correzione e vedi il risultato. Quindi, dopo aver eseguito nuovamente il backup delle cose (e idealmente impedire gli aggiornamenti simultanei), si corregge l'istanza di produzione, idealmente tramite una patch software.
Se devi testare qualcosa in un database di produzione ... no, non lo fai. Qualunque test tu debba fare, dovresti farlo in un'istanza di sviluppo. Se hai bisogno di alcuni dati per fare i test, li ottieni lì.