hope this is the right place to ask, since i was redirected here from the Play Framework Google Group.
We have a Play Project (Version 2.5.18) using Evolutions to apply changes to the database schema. Of course we have disabled the “auto apply” for down scripts on our production systems, but now some rather strange issue occured.
Two identical instances of our application, each using their own database, have the same revisions of evolution scripts applied. We checked this in the play_evolutions table: Status is “applied”, the hash, apply_script and revert_script are absolutely identical. They are also identical with the scripts in the physical sql files which are deployed on the server.
But when we start one of the systems we get the error “p.a.d.e.ApplicationEvolutions - Your production database [default] needs evolutions, including downs!”. The other application instance works fine. The entries (hash, and scripts) in the “play_evolutions” are even the same in both databases.
Certainly we can solve this by executing the down scripts manually, deleting the entries in the “play_evolutions” table and letting play let the database “evolve” again
Now I ask myself, why do we get the error on application startup for only one system, since the entries in the “play_evolutions” table are valid and matching with the physical sql scripts.
I also tried to find the logic how Evolutions defines the conditions for applying down scripts, but it seems that not all relevant source files from Evolutions are accessable in the GitHub Repository.
So the concrete question is, how does Evolutions decide, when to apply down scripts?
Thanks in advance.