Pergunta

Ok, diga que você tem dois DBs. Um que você usa como um modelo mestre que passa por várias revisões, digamos que agora estamos na revisão 3. Mas o segundo banco de dados é uma cópia do modelo como estava na revisão 1.

Como o DB 2 está em uso, você não deseja soltar nenhuma mesa, mas precisa atualizar a estrutura de todo o banco de dados para a versão mais recente do DB 1.

Existe algum método de fazer isso sem precisar passar manualmente e fazer as mesmas alterações repetidas vezes (em muitos DBs em várias versões) e sem perder nenhum dos dados?

Sei que a integridade dos dados é o problema, porque alguns dados podem não ser mais válidos etc etc, mas não existe uma maneira de substituir isso?

Idealmente, eu só quero poder usar o MySqldump da estrutura do DB 1 e substituir qualquer tabela conflitante no DB 2 com as novas versões do DB 1 sem perder todos os dados. Se houver alguma maneira de fazer isso em Phpmyadmin, isso seria grandioso.

Foi útil?

Solução

Podes tentar MySQL Workbench; permite que você

  1. Crie esquema a partir de um banco de dados MySQL.
  2. Importe o esquema para o MySQL Workbench por engenharia reversa da versão 3 do banco de dados,
  3. e então compare -o com o esquema no db versão 1 para gerar um SQL alter roteiro.

Outras dicas

O seu conector de banco de dados faz isso para você (algumas estruturas do Python podem evoluir um banco de dados) ou você deve fazê -lo manualmente.

Se você precisar fazer isso manualmente, a melhor abordagem é poder criar todo o banco de dados com alguns dados a partir de scripts. Isso deve ser totalmente automático. Depois de criar a versão base, você aplica script após o script para evoluir o banco de dados (alteração de tabelas, etc.).

Faça isso em testes automáticos e você pode migrar automaticamente o banco de dados ao instalar a próxima versão no site de um cliente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top