Working in a project, system versions are incremented manually in the semantic model , usually after a sprint a new version is released when a job is merged to the main branch and goes through the CI . And I only have Javascript and PHP programmers available for this project and the database used is MySQL.
Each development cycle may have generated changes in the database or not changes that can be structural (tables, clusters), logical (functions, triggers, procedures) or data (records in tables).
Aligning the releases of the software with the database has proved to be a real challenge since each client represents a database and must be updated individually and control of the database version is done through a differentiation script of the database structure along with the records INSERT / UPDATE / DELETE commands, as suggested in this question: How to version database data mySQL? .
The main disadvantage of these techniques is that it is possible to only advance the version, the rollback is not possible would be interesting to "return" or "advance" between versions, with possibility of a rollback if the version presents an instability in a given client .The expected behavior was the application's autonomy when updating or regressing the version were applied to the necessary changes in the database. For example, a field was added or a trigger changed, the application itself already applied that change according to the update.
In a project where only php programmers were available, and the database is mysql, what framework, tool, or methodology is available in the market to create a database versioning along with the application?