I have a NestJS app with TypeORM, dockerized. I have synchronize
turned off, using migrations instead. In the container entry point, I do yarn typeorm migration:run
. It works well the first time around, and according to the logs it inserts records into the migrations
table.
I noticed that when I start the project the next time it often tries to re-run migrations and fails (as expected) due to "relation already exists". At this point I can verify that entries are indeed missing from the migrations
table via docker-compose exec db psql -U postgres -c 'SELECT * FROM "migrations" "migrations"
. The DB schema is up to date. When I insert a new record manually it gets an incremental ID after the missing records. So the records were there at some point.
I can't figure out what might cause entries in the migrations
table to disappear (be rolled back?). This happens on the project linked above. It's a straightforward example project. I don't have an entity accidentally named "migrations". :)
Running specs that synchronized the DB was the issue.
I had a .env.test
to use a different DB, but as it turns out that is not supported by dotenv
. There are a few ways to make it work. I chose dotenv-flow/config
and added it to my test script:
jest --collect-coverage --setupFiles dotenv-flow/config