amacneil / amacneil/dbmate

Migration table is not found

Aberta
#440 3 comentários 2 reações 0 responsáveis Ver no GitHub
bug needs more info
Linguagem predominante
Go
Estrelas
7.4k
Forks
380
Merge médio
1d 16h
PRs com merge (30d)
2

Descrição

**Description**

When running `dbmate up` the migration table is not found thus migrations in the migration directory are re-ran every single time which result in an error.

We currently run dbmate part of a shell script that loops over some values and applies the migrations for each value in the loop.
It looks something like the following:
```
values=$(cat cars)
for value in $values; do
echo "Migrating up '$value' schema"
dbmate \
--url "$DATABASE_URL" \
--migrations-dir "migrations/$value" \
--migrations-table "$value.schema_migrations" \
--no-dump-schema \
--wait \
up
done
```

The `DATABASE_URL` has the following value: `postgresql://atlas:postgres@localhost:5432/atlas?sslmode=disable`

When using **dbmate version 1.6.0**, everything works as expected. When we updated to version 2.X.X, we started seeing the previously described behavior.

By running dbmate in my IDE and setting breakpoints, I was able to trace where the issue is. For Postgres, in the `quotedMigrationsTableNameParts` method, the `quote_ident` function that's being used to add quotations around the schema name are resulting in the table `schema_migrations` not to be found even though it exists. If the query used to find the schema migration tables is adjusted from `select quote_ident(unnest($1::text[]))` to `select unnest($1::text[])` then the schema migrations is correctly found.
This behavior seems to not exist in version 1.6.0

- Version: 2
- Database: Postgres 12 running inside a docker container
- Operating System: macOS

**Steps To Reproduce**

dbmate \
--url "postgresql://atlas:postgres@localhost:5432/atlas?sslmode=disable" \
--migrations-dir "migrations/bmw" \
--migrations-table "bmw.schema_migrations" \
--no-dump-schema \
--wait \
up

the migrations in the migration directory are always ran as if it's the first time dbmate is running

**Expected Behavior**

the migrations that already ran and are in the `schema_migrations` table are not ran and only new migrations run

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.