twerq has asked for the wisdom of the Perl Monks concerning the following question:

Dear Monks,

I'm looking for a CPAN module or anything inside the DBI scope that I can employ to synchronize database layouts. Something that can basically make diffs between two databases, and generate CREATE and ALTER statements for MySQL.

I've got a CGI::Application that I'm using to share a common codebase for many instances of a site. Each 'instance' of the CGI::Application has it's own copy of the database to work with...

...using CGI::Application allows me to make all my changes and bug-fixes in one place, which is great. But what happens when I want to change the length of a column in the DB? What about adding a column? It seems to me I'm going to have to go around and make this same change to every instance of the database, which seems rather tedious and unnecessary.

If the CGI::Application could compare it's DB layout to the Main DB and make small updates, changes, etc, things would be much smoother.

Does anything do this?
Is anybody else doing this? Any suggestions?