First run supabase services
to see what components on local are out of sync with your remote:
>supabase services
SERVICE IMAGE │ LOCAL │ LINKED
─────────────────────────┼──────────────────────┼────────────
supabase/postgres │ 15.1.1.22 │ 15.1.1.25
supabase/gotrue │ v2.143.1 │ v2.144.0
postgrest/postgrest │ v12.0.2 │ v12.0.2
supabase/realtime │ v2.25.50 │ -
supabase/storage-api │ v0.48.2 │ v0.48.2
supabase/edge-runtime │ v1.33.5 │ -
supabase/studio │ 20240101-8e4a094 │ -
supabase/postgres-meta │ v0.75.0 │ -
supabase/logflare │ 1.4.0 │ -
bitnami/pgbouncer │ 1.20.1-debian-11-r39 │ -
darthsim/imgproxy │ v3.8.0 │ -
Run supabase link to sync your local image versions with the linked project.
Then run supabase link
.
Run supabase services
again, and your local and linked versions should be identical.
>supabase services
SERVICE IMAGE │ LOCAL │ LINKED
─────────────────────────┼──────────────────────┼────────────
supabase/postgres │ 15.1.1.25 │ 15.1.1.25
supabase/gotrue │ v2.144.0 │ v2.144.0
postgrest/postgrest │ v12.0.2 │ v12.0.2
supabase/realtime │ v2.25.50 │ -
supabase/storage-api │ v0.48.2 │ v0.48.2
supabase/edge-runtime │ v1.33.5 │ -
supabase/studio │ 20240101-8e4a094 │ -
supabase/postgres-meta │ v0.75.0 │ -
supabase/logflare │ 1.4.0 │ -
bitnami/pgbouncer │ 1.20.1-debian-11-r39 │ -
darthsim/imgproxy │ v3.8.0 │ -
Now you will need to restart your postgres via:
supabase stop
supabase start
In my case, this shows how the new postgres container was downloaded:
>supabase start
: Pulling from supabase/postgres
17d0386c2fff: Pull complete
695ca30364d0: Pull complete
...
Status: Downloaded newer image for public.ecr.aws/supabase/postgres: 15.1.1.25
v2.144.0: Pulling from supabase/gotrue
3c854c8cbf46: Already exists
...
Digest: sha256:5e1251b70199f5f2324f8e1767b2b75201a4038af3f26ca8249dc269f96c7dce
Status: Downloaded newer image for public.ecr.aws/supabase/gotrue:v2.144.0
Started supabase local development setup.
Finally check your postgresql extensions and upgrade.
SELECT * FROM pg_available_extensions
WHERE installed_version is not null
AND default_version != installed_version
;
In my case this returned:
name | default_version | installed_version | comment
----------+-----------------+-------------------+------------------------------
pg_cron | 1.6 | 1.4-1 | Job scheduler for PostgreSQL
pg_graphql| 1.5.1 | 1.4.2 | pg_graphql: GraphQL support
Upgrade pg_cron:
ALTER EXTENSION pg_cron UPDATE TO '1.6';
However the same did not work for pg_graphql because the upgrade path was not available.