Isso não é um bug
Pelo menos não no seu código. É um bug no seu processo . Seu gerente de projeto deve estar muito mais preocupado com o seu processo do que com o seu código.
Como você lida com isso?
Simplesmente, não permitindo que os engenheiros alterem os bancos de dados de produção ou desenvolvimento compartilhado .
Supondo que este seja um banco de dados de desenvolvimento compartilhado:
Idealmente, se possível, evite ter um banco de dados compartilhado em primeiro lugar . Em vez disso, tenha bancos de dados por desenvolvedor de curta duração. Isso deve ser automatizado com scripts, caso contrário, o custo para testar se torna muito alto e há um incentivo para não testar as coisas. Você pode ter esses bancos de dados na estação de trabalho do desenvolvedor ou em um servidor central.
Se, por algum motivo, você DEVE absolutamente ter um banco de dados compartilhado, deve usar equipamentos - essencialmente, algo que defina o banco de dados para um estado em bom estado toda vez que você precisar usá-lo. Isso evita que os desenvolvedores sejam mordidos pelas mudanças de outras pessoas.
Se você precisar aplicar alterações permanentes ao banco de dados, confirme-as com seu controle de origem . Configure seu banco de dados de forma que os desenvolvedores não tenham permissão para gravá-lo diretamente e tenha um programa que retire as alterações do controle de origem e as aplique.
Por fim, a partir de sua descrição de como você está depurando as coisas, parece que você não está usando o IC . Use o IC . É um pouco trabalhoso de configurar, mas economizará muito tempo a longo prazo, sem mencionar que você não precisa se preocupar com erros improdutíveis no banco de dados. Agora você só precisa se preocupar com heisenbugs !
Supondo que este seja um banco de dados de produção:
Se seus desenvolvedores estão alterando os bancos de dados de produção, muitas coisas deram errado, mesmo que as alterações estejam absolutamente corretas.
Os desenvolvedores nunca devem acessar bancos de dados de produção . Não há absolutamente nenhuma razão para isso, e tantas coisas que podem dar muito errado.
Se você precisar consertar algo em um banco de dados de produção, primeiro faça o backup, restaure esse backup em uma instância diferente (de desenvolvimento) e, em seguida, execute esse banco de dados de desenvolvimento. Depois de pensar que você tem uma correção pronta (no controle de origem!), Refaça a restauração, aplique a correção e veja o resultado. Depois, depois de fazer o backup novamente (e, idealmente, evitar atualizações simultâneas), você corrige a instância de produção, idealmente através de um patch de software.
Se você precisa testar algo em um banco de dados de produção ... não, não precisa . Quaisquer que sejam os testes que você precisa fazer, você deve fazer em uma instância de desenvolvimento. Se você precisar de alguns dados para fazer os testes, você os incluirá lá.