A common occurrence when rolling out the next version of a software package is that some of the data structures change. When you are using a Sql database, an appropriate series of alters and updates may be required. I’ve seen (and created myself) many ways of doing this over the years. For example RoR has the concept of migrations. However, everything I’ve done so far seems a bit hairy to maintain or has other shortcomings.
In a magical world I’d be able to specify the desired schema definition, and have something automatically sort out what alters, updates, etc. are needed to move from the existing database layout…
What modern methodologies/practices/patterns exist for rolling out table definition changes with software updates? Do any MySql specific tools/scripts/commands exist for this kind of thing?
Have you looked into flyway or dbdeploy ? Flyway is Java specific, but I believe works with any DB, dbdeploy supports more languages, and again multiple databases.