@Max: This error happens if for example you run application and in another terminal you change any table. I think that you have application already started and executed mix ecto.migrate. You need to restart app or your connection to database after migration finishes, but I don’t know when to detect it. I suggest to not complicate it and simply restart application.
@Max: hmm, strange
I found solution for it at: stackoverflow.
I don’t know what you exactly do, but I through about:
You started your app
Your app (or you manually) changed database structure
From this topic we know that connection needs to be updated (something like per connection cache?)
I don’t know what deployment tools you were using, but from what I can imagine you only need to restart your app (or maybe proxy if any) that holds connection to database. Once your app setups new connection your app should see new database structure.
Another words: you do not need to restart database after you call MIX_ENV=prod mix ecto.migrate (when your app is not started), do you?
So you only need to restart connection between your app and database. What you were doing is permanent close all connections to that database. Maybe there was a connection cache (remember database structure for IP?) or something, but in normal case you do not need to restart Amazon RDS or maybe you are using “special” database that needs a restart. Out of curiosity: what database are you using for that application? I don’t have such a problem with latest PostgreSQL.
For deployment i use Distillery. I´m almost sure i´ve tried to restart the app without any success. Perhaps the restart itself didn´t work without getting noticed by me. I will try your advice next time again.