Esto no es un error
Al menos no en tu código. Es un error en tu proceso . Su gerente de proyecto debería estar mucho más preocupado por su proceso que su código.
Como tratas con esto?
En pocas palabras, al no permitir que los ingenieros cambien las bases de datos de producción o desarrollo compartido .
Suponiendo que se trata de una base de datos de desarrollo compartida:
Idealmente, si es posible, evite tener una base de datos compartida en primer lugar . En cambio, tenga bases de datos por desarrollador que sean de corta duración. Esto debería automatizarse con scripts, de lo contrario el costo de la prueba se vuelve demasiado grande, y hay un incentivo para no probar las cosas. Puede tener estas bases de datos en la estación de trabajo del desarrollador o en un servidor central.
Si, por alguna razón, DEBE tener una base de datos compartida, debe usar accesorios , esencialmente, algo que establece la base de datos en un estado bueno conocido cada vez que necesita usarla. Esto evita que los desarrolladores sean mordidos por los cambios de otras personas.
Si necesita aplicar cambios permanentes a la base de datos, debe confirmarlos en su control de origen . Configure su base de datos de modo que los desarrolladores no tengan permiso para escribir directamente en ella, y tengan un programa que extraiga los cambios del control de origen y los aplique.
Finalmente, a partir de su descripción de cómo está depurando cosas, parece que no está usando CI . Use CI . Es un poco difícil de configurar, pero ahorrará MUCHO tiempo a largo plazo, sin mencionar que evitará que se preocupe por los errores de base de datos no reproducibles. ¡ Ahora solo tendrás que preocuparte por los heisenbugs !
Asumiendo que esta es una base de datos de producción:
Si sus desarrolladores están cambiando las bases de datos de producción, muchas cosas han salido terriblemente mal, incluso si los cambios son absolutamente correctos.
Los desarrolladores nunca deberían acceder a las bases de datos de producción . No hay absolutamente ninguna razón para hacerlo, y tantas cosas que pueden salir muy, muy mal.
Si necesita arreglar algo en una base de datos de producción, primero haga una copia de seguridad, restaure esa copia de seguridad en una instancia (de desarrollo) diferente y luego juegue alrededor de esa base de datos de desarrollo. Una vez que cree que tiene una solución lista (¡en el control de origen!), Vuelve a hacer la restauración, aplica la solución y ve el resultado. Luego, después de hacer una copia de seguridad de las cosas nuevamente (e idealmente evitar las actualizaciones simultáneas), arregla la instancia de producción, idealmente a través de un parche de software.
Si necesita probar algo en una base de datos de producción ... no, no lo necesita . Cualquier prueba que necesite hacer, debe hacerlo en una instancia de desarrollo. Si necesita algunos datos para hacer las pruebas, obtendrá esos datos allí.