amacneil / amacneil/dbmate

Migration table is not found

Abierto
#440 3 comentarios 2 reacciones 0 asignados Ver en GitHub
bug needs more info
Lenguaje dominante
Go
Estrellas
7.4k
Forks
380
Merge medio
1 d 16 h
PR fusionados (30 d)
2

Descripción

**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

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.