CLI em Go para comparar dois schemas MySQL e gerar o SQL para sincronização.
Observação: o nome do binario/comando atual do projeto é svcomp.
- Go 1.23+
- MySQL acessível para source e target
- Docker + Docker Compose (para testes de integracao)
make buildBinario gerado em:
./bin/svcompComando principal:
./bin/svcomp compare --source "<DSN_SOURCE>" --target "<DSN_TARGET>" [--output arquivo.sql] [--dry-run]Flags:
--source(obrigatoria): DSN do banco source--target(obrigatoria): DSN do banco target--output(opcional): arquivo para salvar o SQL gerado--dry-run(opcional): imprime o SQL no stdout
Ajuda:
./bin/svcomp --help
./bin/svcomp help compareExemplo de DSN valido:
user:senha@tcp(host:3306)/nome_do_schema?parseTime=trueExemplo local usando ambiente de integracao:
- Source:
root:root@tcp(127.0.0.1:3307)/svcomp_source?parseTime=true - Target:
root:root@tcp(127.0.0.1:3308)/svcomp_target?parseTime=true
Gerar SQL e imprimir no terminal:
./bin/svcomp compare \
--source "root:root@tcp(127.0.0.1:3307)/svcomp_source?parseTime=true" \
--target "root:root@tcp(127.0.0.1:3308)/svcomp_target?parseTime=true" \
--dry-runGerar SQL e salvar em arquivo:
./bin/svcomp compare \
--source "root:root@tcp(127.0.0.1:3307)/svcomp_source?parseTime=true" \
--target "root:root@tcp(127.0.0.1:3308)/svcomp_target?parseTime=true" \
--output sync.sqlO projeto possui um ambiente Docker com dois MySQL e schemas de exemplo:
mysql-sourcena porta3307mysql-targetna porta3308- Schemas SQL em
testdata/integration/schemas/
Comandos uteis:
make integration-up # sobe os containers
make integration-reset # remove os schemas
make integration-restore # remove e restaura schema1/schema2
make test-integration # sempre remove, restaura e roda os testes
make integration-down # derruba containers mantendo volumes
make clean-integration # derruba containers e remove volumes/orfaosRodar todos os testes:
make testRodar testes de integracao (com preparo automatico dos schemas):
make test-integration