graphile / migrate

Opinionated SQL-powered productive roll-forward migration tool for PostgreSQL.
MIT License
751 stars 58 forks source link

Setting DATABASE_OWNER on a supabase database #229

Open yesmoreandco opened 2 days ago

yesmoreandco commented 2 days ago

Summary

When using graphile-migrate with supabase, it uses the wrong DATABASE_OWNER.

Supabase has a url that looks like this

postgresql://[user].[projectId]:[password]@aws-0-us-west-1.pooler.supabase.com:6543/[db-name]

So the :DATABASE_OWNER variable is set to [user].[projectId] instead of [user]

Steps to reproduce

  1. Create a supabase project
  2. Create a database, user and password in the supabase url (default is postgres)
  3. Put the above connection url into a DATABASE_URL environment variable.
  4. Run graphile-migrate migrate

Expected results

The migration runs.

Actual results

graphile-migrate: Running migration '000001.sql'
error: syntax error at or near "."

The . is from the find and replace of [user].[projectId]

Possible Solution

Give the ability to manually override the :DATABASE_OWNER placeholder.

yesmoreandco commented 2 days ago

looks like this is related to https://github.com/graphile/migrate/issues/75 and they propose a reasonable workaround.

benjie commented 2 days ago

What is the username inside the database, is it [user] or is it [user].[projectId]? You can find out via select user;