GitDDL::Migrator - database migration utility for git managed SQL extended GitDDL
use GitDDL::Migrator; my $gd = GitDDL::Migrator->new( work_tree => '/path/to/project', # git working directory ddl_file => 'sql/schema_ddl.sql', dsn => ['dbi:mysql:my_project', 'root', ''], );
GitDDL::Migrator is database migration utility extended GitDDL.
GitDDL is very cool module. It's very simple and developer friendly. I use it in development, but features of it are not enough in operation phase.
Features needed at operation phases are: e.g.
- save migration history
- rollback to previous version
- specify version
- specify SQL (sometimes SQL::Translator's output is wrong)
- check differences from versioned SQL and real database
Then for solving them, I wrote GitDDL::Migrator.
Create GitDDL::Migrator object. Available options are:
work_tree=> 'Str' (Required)
Git working tree path includes target DDL file.
ddl_file=> 'Str' (Required)
DDL file ( .sql file) path in repository.
If DDL file located at /repos/project/sql/schema.sql and work_tree root is /repos/project, then this option should be sql/schema.sql
dsn=> 'ArrayRef' (Required)
DSN parameter that pass to DBI module.
version_table=> 'Str' (optional)
database table name that contains its git commit version. (default: git_ddl_version)
ignore_tables=> 'ArrayRef' (optional)
tables for ignoring when calling
check_ddl_mismatch(). (default: empty)
display differences from versioned DDL and real database setting.
display differences from real database setting and versioned DDL.
check differences from versioned DDL and real database setting.
get previous database version.
display differences SQL from current version and previous version.
Only create version table, don't deploy any other SQLs. It is useful to apply
GitDDL::Migrator to existing databases.
Copyright (C) Masayuki Matsuki.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Masayuki Matsuki <firstname.lastname@example.org>