In my case that was due to two things.
In previous versions of play framework (maybe 1.x, maybe 2.0.x, not sure, when) evolutions were stored in db with prefix whitespace in lines, like this:
CREATE TABLE Chapter (
id bigint(20) NOT NULL AUTO_INCREMENT,
name varchar(255) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE Chapter (
id bigint(20) NOT NULL AUTO_INCREMENT,
name varchar(255) NOT NULL,
PRIMARY KEY (id)
);
2) In play 2.2 different evolutions are checked from first to last: first 1.sql is checked against evolution 1 in db, then 2, 3 and so on.
If some pair differs, all evolutions sgarting from different will need to be downgraded and upgraded.
In previous versions of play evolutions were checked from last to first-equal, so if your last evolutions were equal, other evolutions were not checked.
After this two changes play finds first evolutions with different whitespace and asks to reapply them.
As a solution you may manually update evolutions in db: delete all prefix whitespace in scripts, update hash.
But it would even be better if play ignores whitespace in evolutions both from database and application, not only from application.