Durante os tempos de desenvolvimento pesado, o esquema do banco de dados muda rápida e continuamente, e quando nosso envio semanal para a versão beta chega, o esquema mudou tanto que a única opção sensata é destruir todas as tabelas que posso e copie as novas versões do meu banco de dados dev. Obviamente, isso não vai funcionar assim que iniciarmos, já que os dados de produção de nuking são uma receita para o desastre, então eu queria saber quais estratégias existem para gerenciar as alterações do esquema do banco de dados de uma versão / revisão para outra?
Alguns que eu encontrei ou experimentei:
- Nuke-and-dump direto de um banco de dados para outro (o que estou fazendo agora)
- Manter um arquivo UPDATE.sql com instruções SQL executadas via script ou manualmente.
- Mantendo um arquivo update.php com um valor "db-schema-version" correspondente no banco de dados ativo
A terceira opção parece ser a mais sensata, mas ainda existe a possibilidade de uma consulta SQL mal construída falhar no meio do script, deixando o banco de dados em um estado semi-atualizado, exigindo a restauração de um backup.
Parece um problema, mas acontece que, como equipe, usamos o phpMyAdmin, e não consigo confiar em mim mesmo, lembre-se de copiar a instrução SQL executada para colar no arquivo update.php. Depois de navegar para outra página, preciso reescrever a instrução SQL manualmente, ou reverter minhas alterações e fazê-lo novamente.
Acho que o que espero é uma solução que não afete nosso fluxo de trabalho de desenvolvimento estabelecido?
update.php
ouupdate.sql
em um ambiente de teste antes de aplicá-lo ao banco de dados ativo, certo? E o PHPMyAdmin está sendo responsabilizado pelos possíveis problemas que podem ocorrer em scripts, talvez seja hora de procurar uma ferramenta diferente / melhor?