In team environment where everyone is working on their own branch, the integer-based migration approach breaks down as it causes collisions.
One solution is to prefix migrations with a timestamp instead of integer. The version table can keep track of the timestamp instead of the version number.