-
Notifications
You must be signed in to change notification settings - Fork 277
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Migration table is not found #440
Comments
For future visitors to this issue. I thought I had the issue mentioned here, since I was getting the same error on an initial migration. However, in my case, the underlying issue wasn't quoting -- the issue was that I fixed this by setting |
Thanks for raising this issue, @fouadkada and @sgielen. Considering our current tests pass, I'd like to try and figure out what is different about how Postgres is configured in your environments vs. the one our tests run against. Our tests are currently run against PostgreSQL 10.21, with all default settings based on the official Docker image for
I wonder if it's a matter of the
Per the documentation on search path: "The first schema in the search path that exists is the default location for creating new objects." In our case in the dbmate test database, the only schema that exists is I'd like help coming up with a reproducible test that fails with the current dbmate, that we can then use as a guiderail to test all possible solutions and also ensure we don't regress this in the future as it's not easily understood, given the number of ways this particular code has been implemented in dbmate over time. What is different about your environments that triggers this error, that the current dbmate test suite's environment and test cases do not trip over? |
I also suspect this issue is related to #429 as well. |
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:
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, thequote_ident
function that's being used to add quotations around the schema name are resulting in the tableschema_migrations
not to be found even though it exists. If the query used to find the schema migration tables is adjusted fromselect quote_ident(unnest($1::text[]))
toselect unnest($1::text[])
then the schema migrations is correctly found.This behavior seems to not exist in version 1.6.0
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 runThe text was updated successfully, but these errors were encountered: