Cole os esquemas anterior e novo e escolha o dialeto. Revise o SQL gerado: remoções de tabelas e colunas ficam comentadas e as demais instruções precisam de conferência antes de rodar.
Funciona localmente no seu navegadorCole o esquema antigo em Before e o novo em After, escolha PostgreSQL ou MySQL e clique em Gerar migração. A ferramenta lê as instruções CREATE TABLE e escreve as instruções ALTER e CREATE que levam um snapshot ao outro.
Tudo roda no navegador; nenhum texto do esquema sai da página. O resultado é um rascunho para revisão: as instruções que podem destruir dados ficam como comentários para que nada seja executado por acidente.
Ele compara tabelas e colunas: tabelas e colunas adicionadas ou removidas, mudanças de tipo, mudanças de NOT NULL e mudanças de valor padrão. Chaves primárias adicionadas, removidas ou com outro conjunto de colunas também são reportadas, incluindo definições no nível da tabela PRIMARY KEY (a, b).
As chaves estrangeiras são comparadas tanto quando estão na coluna (REFERENCES users(id)) quanto como restrição de tabela (FOREIGN KEY (a, b) REFERENCES parent (x, y)). Uma chave nova vira ADD CONSTRAINT e uma removida fica comentada com o nome de restrição que a ferramenta usaria.
DROP TABLE, DROP COLUMN e chaves primárias ou estrangeiras removidas são impressos como comentários sob um aviso DESTRUCTIVE, porque descartam dados ou restrições que rodar a ferramenta de novo não recupera. Esta página não executa o rascunho: você decide quais linhas ativar.
Apenas instruções CREATE TABLE são lidas. Definições UNIQUE, CHECK e INDEX não são comparadas, e mudanças de dados, renomeações, views, sequences, triggers, permissões e opções de tabela específicas do motor ficam fora do escopo. Quando essas definições são ignoradas, o rascunho avisa em vez de mostrar um diff limpo.
Teste antes em uma cópia de staging e gere o esquema com um dump apenas de esquema para que os dados não escondam o diff. O PostgreSQL executa quase todo DDL dentro de uma transação, então BEGIN e ROLLBACK podem desfazer uma migração errada; o MySQL confirma DDL de forma implícita, então um erro precisa ser corrigido para frente.
Adicionar NOT NULL ou uma chave primária valida ou reescreve uma tabela existente e pode manter um bloqueio enquanto isso. Verifique quanto tempo leva com o tamanho real da tabela (o PostgreSQL valida NOT NULL com uma varredura completa, o MySQL pode reconstruir a tabela) e agende a mudança em vez de rodar em horário de pico.