mirror of
https://github.com/supabase/supabase.git
synced 2026-05-06 08:56:46 -04:00
feat: consolidate settings (#37580)
* feat: move storage settings * feat: redirect * feat: database settings in service area * feat: move data api settings * fix: revert data API placement * feat: minor UX touches * fix: simplify configuration group * feat: references to database settings * feat: references to storage settings * fix: redirects and formatting * fix: Import StorageMenu dynamically to avoid SSR issues with useLocalStorage * fix: move Data API closer to semantic siblings * fix: revert smart comma * Shift bucket sort logic into storage explorer store --------- Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
This commit is contained in:
@@ -12,5 +12,5 @@ Your database will be available in less than a minute.
|
||||
You can find your project credentials on the dashboard:
|
||||
|
||||
- [Database connection strings](https://supabase.com/dashboard/project/_/settings/api?showConnect=true): Direct and Pooler connection details including the connection string and parameters.
|
||||
- [Database password](https://supabase.com/dashboard/project/_/settings/database): Reset database password here if you do not have it.
|
||||
- [Database password](https://supabase.com/dashboard/project/_/database/settings): Reset database password here if you do not have it.
|
||||
- [API credentials](https://supabase.com/dashboard/project/_/settings/api): your serverless API URL and `anon` / `service_role` keys.
|
||||
|
||||
@@ -11,7 +11,7 @@ For data science or ephemeral workloads, the [Supabase Vecs](https://supabase.gi
|
||||
|
||||
<Admonition type="tip">
|
||||
|
||||
You can get your connection string from the [**Database Settings**](https://supabase.com/dashboard/project/_/settings/database) page in your dashboard. Make sure to check **Use connection pooling**, then copy the URI. Also, change the URI scheme from `postgres` to `postgresql`. `vecs` uses SQLAlchemy under the hood, which only supports `postgresql` as a dialect.
|
||||
You can get your connection string from the [**Database Settings**](https://supabase.com/dashboard/project/_/database/settings) page in your dashboard. Make sure to check **Use connection pooling**, then copy the URI. Also, change the URI scheme from `postgres` to `postgresql`. `vecs` uses SQLAlchemy under the hood, which only supports `postgresql` as a dialect.
|
||||
|
||||
</Admonition>
|
||||
|
||||
|
||||
@@ -189,7 +189,7 @@ Since we're managing users and authentication outside of Supabase, we have two o
|
||||
|
||||
#### Direct Postgres connection
|
||||
|
||||
You can directly connect to your Supabase Postgres DB using the [connection info](/dashboard/project/_/settings/database) on your project's database settings page. To use RLS with this method, we use a custom session variable that contains the current user's ID:
|
||||
You can directly connect to your Supabase Postgres DB using the [connection info](/dashboard/project/_/database/settings) on your project's Database Settings page. To use RLS with this method, we use a custom session variable that contains the current user's ID:
|
||||
|
||||
```sql
|
||||
-- enable row level security
|
||||
|
||||
@@ -28,7 +28,7 @@ hideToc: true
|
||||
|
||||
<StepHikeCompact.Details title="Get your connection credentials">
|
||||
|
||||
Get your connection credentials from the [`Database Settings`](https://supabase.com/dashboard/project/_/settings/database). You will need:
|
||||
Get your connection credentials from the [`Database Settings`](https://supabase.com/dashboard/project/_/database/settings). You will need:
|
||||
- host
|
||||
- username
|
||||
- password
|
||||
@@ -50,7 +50,7 @@ hideToc: true
|
||||
|
||||
<StepHikeCompact.Details title="Download your SSL Certificate">
|
||||
|
||||
Download your SSL certificate from the Dashboard's [`Database Settings`](https://supabase.com/dashboard/project/_/settings/database)
|
||||
Download your SSL certificate from the Dashboard's [`Database Settings`](https://supabase.com/dashboard/project/_/database/settings)
|
||||

|
||||
</StepHikeCompact.Details>
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@ Choose one of these Vercel Deploy Templates which use our [Vercel Deploy Integra
|
||||
|
||||
### Manual configuration
|
||||
|
||||
In your [`Database Settings`](https://supabase.com/dashboard/project/_/settings/database), make sure `Use connection pooler` is checked and `Transaction` mode is selected, then copy the URI and save it as the `POSTGRES_URL` environment variable. Remember to replace the password placeholder with your actual database password and add the following suffix `?workaround=supabase-pooler.vercel`.
|
||||
In your [`Database Settings`](https://supabase.com/dashboard/project/_/database/settings), make sure `Use connection pooler` is checked and `Transaction` mode is selected, then copy the URI and save it as the `POSTGRES_URL` environment variable. Remember to replace the password placeholder with your actual database password and add the following suffix `?workaround=supabase-pooler.vercel`.
|
||||
|
||||
```txt .env.local
|
||||
POSTGRES_URL="postgres://postgres.cfcxynqnhdybqtbhjemm:[YOUR-PASSWORD]@aws-0-ap-southeast-1.pooler.supabase.com:6543/postgres?workaround=supabase-pooler.vercel"
|
||||
|
||||
@@ -11,7 +11,7 @@ Every [Compute Add-On](/docs/guides/platform/compute-add-ons) has a pre-configur
|
||||
|
||||
### Configuring Supavisor's pool size
|
||||
|
||||
You can change how many database connections Supavisor can manage by altering the pool size in the "Connection pooling configuration" section of the [Database Settings](/dashboard/project/_/settings/database):
|
||||
You can change how many database connections Supavisor can manage by altering the pool size in the "Connection pooling configuration" section of the [Database Settings](/dashboard/project/_/database/settings):
|
||||
|
||||

|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@ If you do not have DBeaver, you can download it from its [website](https://dbeav
|
||||
|
||||
<StepHikeCompact.Step step={5}>
|
||||
<StepHikeCompact.Details title="Download certificate">
|
||||
In the [Database Settings](https://supabase.com/dashboard/project/_/settings/database), download your SSL certificate.
|
||||
In the [Database Settings](https://supabase.com/dashboard/project/_/database/settings), download your SSL certificate.
|
||||
</StepHikeCompact.Details>
|
||||
|
||||
<StepHikeCompact.Code>
|
||||
|
||||
@@ -66,7 +66,7 @@ If you plan on solely using Drizzle instead of the Supabase Data API (PostgREST)
|
||||
|
||||
Connect to your database using the Connection Pooler.
|
||||
|
||||
In your [`Database Settings`](https://supabase.com/dashboard/project/_/settings/database), make sure `Use connection pooler` is checked, then copy the URI and save it as the `DATABASE_URL` environment variable. Remember to replace the password placeholder with your actual database password.
|
||||
In your [`Database Settings`](https://supabase.com/dashboard/project/_/database/settings), make sure `Use connection pooler` is checked, then copy the URI and save it as the `DATABASE_URL` environment variable. Remember to replace the password placeholder with your actual database password.
|
||||
|
||||
</StepHikeCompact.Details>
|
||||
|
||||
|
||||
@@ -98,7 +98,7 @@ By default, Supabase enforces query statement timeouts to ensure fair resource a
|
||||
|
||||
### 3. Estimate your required disk size
|
||||
|
||||
Large datasets consume disk space. Ensure your Supabase project has sufficient disk capacity to accommodate the imported data. If you know how big your database is going to be, you can manually increase the size in your [projects database settings](/dashboard/project/_/settings/database).
|
||||
Large datasets consume disk space. Ensure your Supabase project has sufficient disk capacity to accommodate the imported data. If you know how big your database is going to be, you can manually increase the size in your [projects database settings](/dashboard/project/_/database/settings).
|
||||
|
||||
Read more about [disk management](/docs/guides/platform/database-size#disk-management).
|
||||
|
||||
|
||||
@@ -72,7 +72,7 @@ hideToc: true
|
||||
|
||||
<StepHikeCompact.Details title="SSL">
|
||||
|
||||
Download your SSL certificate from Dashboard's [`Database Settings`](https://supabase.com/dashboard/project/_/settings/database).
|
||||
Download your SSL certificate from Dashboard's [`Database Settings`](https://supabase.com/dashboard/project/_/database/settings).
|
||||
|
||||
In pgAdmin, navigate to the Parameters tab and select connection parameter as Root Certificate. Next navigate to the Root certificate input, it will open up a file-picker modal. Select the certificate you downloaded earlier and save the server details. pgAdmin should now be able to connect to your Postgres via SSL.
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ hideToc: true
|
||||
|
||||
Create a `db.js` file with the connection details.
|
||||
|
||||
To get your connection details, go to your [`Database Settings`](https://supabase.com/dashboard/project/_/settings/database). Make sure `Use connection pooling` is enabled. Choose `Transaction Mode` if you're on a platform with transient connections, such as a serverless function, and `Session Mode` if you have a long-lived connection. Copy the URI and save it as the environment variable `DATABASE_URL`.
|
||||
To get your connection details, go to your [`Database Settings`](https://supabase.com/dashboard/project/_/database/settings). Make sure `Use connection pooling` is enabled. Choose `Transaction Mode` if you're on a platform with transient connections, such as a serverless function, and `Session Mode` if you have a long-lived connection. Copy the URI and save it as the environment variable `DATABASE_URL`.
|
||||
|
||||
</StepHikeCompact.Details>
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ If you use special symbols in your Postgres password, you must remember to [perc
|
||||
|
||||
### Changing your project password
|
||||
|
||||
When you created your project you were also asked to enter a password. This is the password for the `postgres` role in your database. You can update this from the Dashboard under the [database settings](https://supabase.com/dashboard/project/_/settings/database) page. You should _never_ give this to third-party service unless you absolutely trust them. Instead, we recommend that you create a new user for every service that you want to give access too. This will also help you with debugging - you can see every query that each role is executing in your database within `pg_stat_statements`.
|
||||
When you created your project you were also asked to enter a password. This is the password for the `postgres` role in your database. You can update this from the Dashboard under the [Database Settings](https://supabase.com/dashboard/project/_/database/settings) page. You should _never_ give this to third-party service unless you absolutely trust them. Instead, we recommend that you create a new user for every service that you want to give access too. This will also help you with debugging - you can see every query that each role is executing in your database within `pg_stat_statements`.
|
||||
|
||||
Changing the password does not result in any downtime. All connected services, such as PostgREST, PgBouncer, and other Supabase managed services, are automatically updated to use the latest password to ensure availability. However, if you have any external services connecting to the Supabase database using hardcoded username/password credentials, a manual update will be required.
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ select pg_create_logical_replication_slot('example_slot', 'pgoutput');
|
||||
|
||||
<Admonition type="note">
|
||||
|
||||
This will need a **direct** connection (not a Connection Pooler) to your database and you can find the connection info in the [Dashboard](https://supabase.com/dashboard/project/_/settings/database).
|
||||
This will need a **direct** connection (not a Connection Pooler) to your database and you can find the connection info in the [Dashboard](https://supabase.com/dashboard/project/_/database/settings).
|
||||
|
||||
You will also need to ensure that IPv6 is supported by your replication destination (or you can enable the [IPv4 add-on](/docs/guides/platform/ipv4-address))
|
||||
|
||||
|
||||
@@ -79,7 +79,7 @@ Prisma is unable to allocate connections to pending queries fast enough to meet
|
||||
|
||||
- **Increase the pool timeout**: Increase the `pool_timeout` parameter in your Prisma configuration to give the pooler more time to allocate connections.
|
||||
- **Reduce the connection limit**: If you've explicitly increased the `connection_limit` parameter in your Prisma configuration, try reducing it to a more reasonable value.
|
||||
- **Increase pool size**: If you are connecting with Supavisor, try increasing the pool size in the [Database Settings](https://supabase.com/dashboard/project/_/settings/database).
|
||||
- **Increase pool size**: If you are connecting with Supavisor, try increasing the pool size in the [Database Settings](https://supabase.com/dashboard/project/_/database/settings).
|
||||
- **Optimize queries**: [Improve the efficiency of your queries](https://supabase.com/docs/guides/database/query-optimization) to reduce execution time.
|
||||
- **Increase compute size**: Like the preceding option, this is a strategy to reduce query execution time.
|
||||
|
||||
@@ -118,14 +118,14 @@ Postgres or Supavisor rejected a request for more connections
|
||||
### Possible causes:[#possible-causes-max-client-connections-reached]
|
||||
|
||||
- **When working in transaction mode (port 6543):** The error "Max client connections reached" occurs when clients try to form more connections with the pooler than it can support.
|
||||
- **When working in session mode (port 5432):** The max amount of clients is restricted to the "Pool Size" value in the [Database Settings](https://supabase.com/dashboard/project/_/settings/database). If the "Pool Size" is set to 15, even if the pooler can handle 200 client connections, it will still be effectively capped at 15 for each unique ["database-role+database" combination](https://github.com/orgs/supabase/discussions/21566).
|
||||
- **When working in session mode (port 5432):** The max amount of clients is restricted to the "Pool Size" value in the [Database Settings](https://supabase.com/dashboard/project/_/database/settings). If the "Pool Size" is set to 15, even if the pooler can handle 200 client connections, it will still be effectively capped at 15 for each unique ["database-role+database" combination](https://github.com/orgs/supabase/discussions/21566).
|
||||
- **When working with direct connections**: Postgres is already servicing the max amount of connections
|
||||
|
||||
### Solutions [#solutions-causes-max-client-connections-reached]
|
||||
|
||||
- **Transaction Mode for serverless apps**: If you are using serverless functions (Supabase Edge, Vercel, AWS Lambda), switch to transaction mode (port 6543). It handles more connections than session mode or direct connections.
|
||||
- **Reduce the number of Prisma connections**: A single client-server can establish multiple connections with a pooler. Typically, serverless setups do not need many connections. Starting with fewer, like five or three, or even just one, is often sufficient. In serverless setups, begin with `connection_limit=1`, increasing cautiously if needed to avoid maxing out connections.
|
||||
- **Increase pool size**: If you are connecting with Supavisor, try increasing the pool size in the [Database Settings](https://supabase.com/dashboard/project/_/settings/database).
|
||||
- **Increase pool size**: If you are connecting with Supavisor, try increasing the pool size in the [Database Settings](https://supabase.com/dashboard/project/_/database/settings).
|
||||
- **Disconnect appropriately**: Close Prisma connections when they are no longer needed.
|
||||
- **Decrease query time**: Reduce query complexity or add [strategic indexes](https://supabase.com/docs/guides/database/postgres/indexes) to your tables to speed up queries.
|
||||
- **Increase compute size**: Sometimes the best option is to increase your compute size, which also increases your max client size and query execution speed
|
||||
|
||||
@@ -17,7 +17,7 @@ You can obtain your connection info and Server root certificate from your applic
|
||||
|
||||
Download your [SSL certificate](#connecting-with-ssl) to `/path/to/prod-supabase.cer`.
|
||||
|
||||
Find your connection settings. Go to your [`Database Settings`](https://supabase.com/dashboard/project/_/settings/database) and make sure `Use connection pooling` is checked. Change the connection mode to `Session`, and copy the parameters into the connection string:
|
||||
Find your connection settings. Go to your [`Database Settings`](https://supabase.com/dashboard/project/_/database/settings) and make sure `Use connection pooling` is checked. Change the connection mode to `Session`, and copy the parameters into the connection string:
|
||||
|
||||
```shell
|
||||
psql "sslmode=verify-full sslrootcert=/path/to/prod-supabase.cer host=[CLOUD_PROVIDER]-0-[REGION].pooler.supabase.com dbname=postgres user=postgres.[PROJECT_REF]"
|
||||
|
||||
@@ -26,7 +26,7 @@ To check the error message, see the Supabase workflow run for your branch under
|
||||
|
||||
If you enable [network restrictions](/docs/guides/platform/network-restrictions) on your project, the branching cluster will be blocked from connecting to your project by default. This often results in database connection failures when migrating your production project after merging a development branch.
|
||||
|
||||
The workaround is to explicitly allow the IPv6 CIDR range of the branching cluster in your project's [database settings](https://supabase.com/dashboard/project/_/settings/database) page: `2600:1f18:2b7d:f600::/56`
|
||||
The workaround is to explicitly allow the IPv6 CIDR range of the branching cluster in your project's [Database Settings](https://supabase.com/dashboard/project/_/database/settings) page: `2600:1f18:2b7d:f600::/56`
|
||||
|
||||
<Image
|
||||
alt="Network restrictions to allow connections from branching cluster"
|
||||
|
||||
@@ -115,7 +115,7 @@ Deployed edge functions are pre-configured to use SSL for connections to the Sup
|
||||
|
||||
If you want to use SSL connections during local development, follow these steps:
|
||||
|
||||
1. Download the SSL certificate from [Database settings](https://supabase.com/dashboard/project/_/settings/database)
|
||||
1. Download the SSL certificate from [Database Settings](https://supabase.com/dashboard/project/_/database/settings)
|
||||
2. Add to your [local .env file](https://supabase.com/docs/guides/functions/secrets), add these two variables:
|
||||
|
||||
```bash
|
||||
|
||||
@@ -21,7 +21,7 @@ Combining Kysely with Deno Postgres gives you a convenient developer experience
|
||||
|
||||
Find the example on [GitHub](https://github.com/supabase/supabase/tree/master/examples/edge-functions/supabase/functions/kysely-postgres)
|
||||
|
||||
Get your database connection credentials from your [Supabase Dashboard](https://supabase.com/dashboard/project/_/settings/database) and store them in an `.env` file:
|
||||
Get your database connection credentials from your [Supabase Dashboard](https://supabase.com/dashboard/project/_/database/settings) and store them in an `.env` file:
|
||||
|
||||
```bash .env
|
||||
DB_HOSTNAME=
|
||||
|
||||
@@ -51,7 +51,7 @@ hideToc: true
|
||||
|
||||
When your project is up and running, navigate to your project dashboard and click on [Connect](https://supabase.com/dashboard/project/_?showConnect=true).
|
||||
|
||||
Look for the Session Pooler connection string and copy the string. You will need to replace the Password with your saved database password. You can reset your database password in your [database settings](https://supabase.com/dashboard/project/_/settings/database) if you do not have it.
|
||||
Look for the Session Pooler connection string and copy the string. You will need to replace the Password with your saved database password. You can reset your database password in your [Database Settings](https://supabase.com/dashboard/project/_/database/settings) if you do not have it.
|
||||
|
||||
<Admonition type="note">
|
||||
|
||||
|
||||
@@ -27,11 +27,11 @@ hideToc: true
|
||||
<StepHikeCompact.Step step={2}>
|
||||
<StepHikeCompact.Details title="Gather Database Connection Strings">
|
||||
|
||||
Go to the [database settings page](https://supabase.com/dashboard/project/_/settings/database). In this quickstart, we are going to connect via the connection pooler. If your network supports IPv6, you can connect to the database directly without using the connection pooler.
|
||||
Go to the [Database Settings page](https://supabase.com/dashboard/project/_/database/settings). In this quickstart, we are going to connect via the connection pooler. If your network supports IPv6, you can connect to the database directly without using the connection pooler.
|
||||
|
||||
We will use the pooler both in `Transaction` and `Session` mode. `Transaction` mode is used for application queries and `Session` mode is used for running migrations with Prisma.
|
||||
|
||||
To do this, set the connection mode to `Transaction` in the [database settings page](https://supabase.com/dashboard/project/_/settings/database) and copy the connection string and append `?pgbouncer=true&&connection_limit=1`. `pgbouncer=true` disables Prisma from generating prepared statements. This is required since our connection pooler does not support prepared statements in transaction mode yet. The `connection_limit=1` parameter is only required if you are using Prisma from a serverless environment. This is the Transaction mode connection string.
|
||||
To do this, set the connection mode to `Transaction` in the [Database Settings page](https://supabase.com/dashboard/project/_/database/settings) and copy the connection string and append `?pgbouncer=true&&connection_limit=1`. `pgbouncer=true` disables Prisma from generating prepared statements. This is required since our connection pooler does not support prepared statements in transaction mode yet. The `connection_limit=1` parameter is only required if you are using Prisma from a serverless environment. This is the Transaction mode connection string.
|
||||
|
||||
To get the Session mode connection pooler string, change the port of the connection string from the dashboard to 5432.
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ hideToc: true
|
||||
|
||||
When your project is up and running, navigate to your project dashboard and click on [Connect](https://supabase.com/dashboard/project/_?showConnect=true).
|
||||
|
||||
Look for the Session Pooler connection string and copy the string. You will need to replace the Password with your saved database password. You can reset your database password in your [database settings](https://supabase.com/dashboard/project/_/settings/database) if you do not have it.
|
||||
Look for the Session Pooler connection string and copy the string. You will need to replace the Password with your saved database password. You can reset your database password in your [Database Settings](https://supabase.com/dashboard/project/_/database/settings) if you do not have it.
|
||||
|
||||
<Admonition type="note">
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ Disk metrics refer to the storage usage reported by Postgres. These metrics are
|
||||
|
||||
- _Database size_: Displays the actual size of the data within your Postgres database. This can be found on the [Database Reports page](https://supabase.com/dashboard/project/_/reports/database).
|
||||
|
||||
- _Disk size_: Shows the overall disk space usage, which includes both the database size and additional files required for Postgres to function like the Write Ahead Log (WAL) and other system log files. You can view this on the [Database Settings page](https://supabase.com/dashboard/project/_/settings/database).
|
||||
- _Disk size_: Shows the overall disk space usage, which includes both the database size and additional files required for Postgres to function like the Write Ahead Log (WAL) and other system log files. You can view this on the [Database Settings page](https://supabase.com/dashboard/project/_/database/settings).
|
||||
|
||||
## Database size
|
||||
|
||||
@@ -94,11 +94,11 @@ The automatic resize operation will add an additional 50% capped to a maximum of
|
||||
|
||||
</Admonition>
|
||||
|
||||
Disk size can also be manually expanded on the [Database settings page](https://supabase.com/dashboard/project/_/settings/database). The maximum disk size for the Pro/Team Plan is 60 TB. If you need more than this, [contact us](https://forms.supabase.com/enterprise) to learn more about the Enterprise Plan.
|
||||
Disk size can also be manually expanded on the [Database Settings page](https://supabase.com/dashboard/project/_/database/settings). The maximum disk size for the Pro/Team Plan is 60 TB. If you need more than this, [contact us](https://forms.supabase.com/enterprise) to learn more about the Enterprise Plan.
|
||||
|
||||
<Admonition type="note">
|
||||
|
||||
You may want to import a lot of data into your database which requires multiple disk expansions. for example, uploading more than 1.5x the current size of your database storage will put your database into [read-only mode](#read-only-mode). If so, it is highly recommended you increase the disk size manually on the [Database settings page](https://supabase.com/dashboard/project/_/settings/database).
|
||||
You may want to import a lot of data into your database which requires multiple disk expansions. for example, uploading more than 1.5x the current size of your database storage will put your database into [read-only mode](#read-only-mode). If so, it is highly recommended you increase the disk size manually on the [Database Settings page](https://supabase.com/dashboard/project/_/database/settings).
|
||||
|
||||
Due to restrictions on the underlying cloud provider, disk expansions can occur only once every six hours. During the six hour cool down window, the disk cannot be resized again.
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ Supabase's core is Postgres, enabling the use of row-level security and providin
|
||||
|
||||
## Retrieve your Supabase host [#retrieve-supabase-host]
|
||||
|
||||
1. If you're new to Supabase, [create a project](https://database.new). Make a note of your password, you will need this later. If you forget it, you can [reset it here](https://supabase.com/dashboard/project/_/settings/database).
|
||||
1. If you're new to Supabase, [create a project](https://database.new). Make a note of your password, you will need this later. If you forget it, you can [reset it here](https://supabase.com/dashboard/project/_/database/settings).
|
||||
1. On your project dashboard, click [Connect](https://supabase.com/dashboard/project/_?showConnect=true)
|
||||
1. Under the Session pooler, click on the View parameters under the connect string. Note your Host (`$SUPABASE_HOST`).
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ Alternatively, use the [Heroku to Supabase migration tool](https://migrate.supab
|
||||
|
||||
1. If you're new to Supabase, [create a project](https://supabase.com/dashboard).
|
||||
1. Get your project's Session pooler connection string from your project dashboard by clicking [Connect](https://supabase.com/dashboard/project/_?showConnect=true).
|
||||
1. Replace [YOUR-PASSWORD] in the connection string with your database password. You can reset your database password on the [Database settings page](https://supabase.com/dashboard/project/_/settings/database) if you do not have it.
|
||||
1. Replace [YOUR-PASSWORD] in the connection string with your database password. You can reset your database password on the [Database Settings page](https://supabase.com/dashboard/project/_/database/settings) if you do not have it.
|
||||
|
||||
## Export your Heroku database to a file [#export-heroku-database]
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ Before you begin the migration, you need to collect essential information about
|
||||
## Retrieve your Supabase host [#retrieve-supabase-host]
|
||||
|
||||
1. If you're new to Supabase, [create a project](https://supabase.com/dashboard).
|
||||
Make a note of your password, you will need this later. If you forget it, you can [reset it here](https://supabase.com/dashboard/project/_/settings/database).
|
||||
Make a note of your password, you will need this later. If you forget it, you can [reset it here](https://supabase.com/dashboard/project/_/database/settings).
|
||||
|
||||
1. On your project dashboard, click [Connect](https://supabase.com/dashboard/project/_?showConnect=true)
|
||||
1. Under the Session pooler, click on the View parameters under the connect string. Note your Host (`$SUPABASE_HOST`).
|
||||
|
||||
@@ -21,7 +21,7 @@ Before you begin the migration, you need to collect essential information about
|
||||
## Retrieve your Supabase host [#retrieve-supabase-host]
|
||||
|
||||
1. If you're new to Supabase, [create a project](https://supabase.com/dashboard).
|
||||
Make a note of your password, you will need this later. If you forget it, you can [reset it here](https://supabase.com/dashboard/project/_/settings/database).
|
||||
Make a note of your password, you will need this later. If you forget it, you can [reset it here](https://supabase.com/dashboard/project/_/database/settings).
|
||||
|
||||
1. On your project dashboard, click [Connect](https://supabase.com/dashboard/project/_?showConnect=true)
|
||||
1. Under the Session pooler, click on the View parameters under the connect string. Note your Host (`$SUPABASE_HOST`).
|
||||
|
||||
@@ -32,7 +32,7 @@ export OLD_DB_URL="postgresql://neondb_owner:xxxxxxxxxxxxxxx-random-word-yyyyyyy
|
||||
## Retrieve your Supabase connection string [#retrieve-supabase-connection-string]
|
||||
|
||||
1. If you're new to Supabase, [create a project](https://supabase.com/dashboard).
|
||||
Make a note of your password, you will need this later. If you forget it, you can [reset it here](https://supabase.com/dashboard/project/_/settings/database).
|
||||
Make a note of your password, you will need this later. If you forget it, you can [reset it here](https://supabase.com/dashboard/project/_/database/settings).
|
||||
|
||||
1. On your project dashboard, click [Connect](https://supabase.com/dashboard/project/_?showConnect=true)
|
||||
1. Under the Session pooler, click the **Copy** button to the right of your connection string to copy it to the clipboard.
|
||||
|
||||
@@ -23,7 +23,7 @@ Example:
|
||||
## Retrieve your Supabase connection string [#retrieve-supabase-connection-string]
|
||||
|
||||
1. If you're new to Supabase, [create a project](https://supabase.com/dashboard).
|
||||
Make a note of your password, you will need this later. If you forget it, you can [reset it here](https://supabase.com/dashboard/project/_/settings/database).
|
||||
Make a note of your password, you will need this later. If you forget it, you can [reset it here](https://supabase.com/dashboard/project/_/database/settings).
|
||||
|
||||
1. On your project dashboard, click [Connect](https://supabase.com/dashboard/project/_?showConnect=true)
|
||||
1. Under Session pooler, Copy the connection string and replace the password placeholder with your database password.
|
||||
|
||||
@@ -27,7 +27,7 @@ Example:
|
||||
## Retrieve your Supabase connection string [#retrieve-supabase-connection-string]
|
||||
|
||||
1. If you're new to Supabase, [create a project](https://supabase.com/dashboard).
|
||||
Make a note of your password, you will need this later. If you forget it, you can [reset it here](https://supabase.com/dashboard/project/_/settings/database).
|
||||
Make a note of your password, you will need this later. If you forget it, you can [reset it here](https://supabase.com/dashboard/project/_/database/settings).
|
||||
|
||||
1. On your project dashboard, click [Connect](https://supabase.com/dashboard/project/_?showConnect=true)
|
||||
1. Under Session pooler, Copy the connection string and replace the password placeholder with your database password.
|
||||
|
||||
@@ -39,7 +39,7 @@ export OLD_DB_URL="postgres://default:xxxxxxxxxxxx@yy-yyyyy-yyyyyy-yyyyyyy.us-we
|
||||
## Retrieve your Supabase connection string [#retrieve-supabase-connection-string]
|
||||
|
||||
1. If you're new to Supabase, [create a project](https://supabase.com/dashboard).
|
||||
Make a note of your password, you will need this later. If you forget it, you can [reset it here](https://supabase.com/dashboard/project/_/settings/database).
|
||||
Make a note of your password, you will need this later. If you forget it, you can [reset it here](https://supabase.com/dashboard/project/_/database/settings).
|
||||
|
||||
1. On your project dashboard, click [Connect](https://supabase.com/dashboard/project/_?showConnect=true)
|
||||
1. Under the Session pooler, click the **Copy** button to the right of your connection string to copy it to the clipboard.
|
||||
|
||||
@@ -44,7 +44,7 @@ breadcrumb: 'Migrations'
|
||||
|
||||
<StepHikeCompact.Step step={4}>
|
||||
<StepHikeCompact.Details title="Get the database password" fullWidth>
|
||||
Reset the password in the [Database Settings](/dashboard/project/_/settings/database).
|
||||
Reset the password in the [Database Settings](/dashboard/project/_/database/settings).
|
||||
|
||||
Replace ```[YOUR-PASSWORD]``` in the connection string with the database password.
|
||||
|
||||
|
||||
@@ -91,7 +91,7 @@ Here are some things that are not stored directly in your database and will requ
|
||||
It can take a few minutes for the database password reset to take effect. Especially if multiple password resets are done.
|
||||
|
||||
</Admonition>
|
||||
Reset the password in the [Database Settings](https://supabase.com/dashboard/project/_/settings/database).
|
||||
Reset the password in the [Database Settings](https://supabase.com/dashboard/project/_/database/settings).
|
||||
|
||||
Replace ```[YOUR-PASSWORD]``` in the connection string with the database password.
|
||||
|
||||
|
||||
@@ -6,17 +6,17 @@ description: "Apply network restrictions for your project's database."
|
||||
|
||||
<Admonition type="note">
|
||||
|
||||
If you can't find the Network Restrictions section at the bottom of your [Database Settings](/dashboard/project/_/settings/database), update your version of Postgres in the [Infrastructure Settings](/dashboard/project/_/settings/infrastructure).
|
||||
If you can't find the Network Restrictions section at the bottom of your [Database Settings](/dashboard/project/_/database/settings), update your version of Postgres in the [Infrastructure Settings](/dashboard/project/_/settings/infrastructure).
|
||||
|
||||
</Admonition>
|
||||
|
||||
Each Supabase project comes with configurable restrictions on the IP ranges that are allowed to connect to Postgres and its pooler ("your database"). These restrictions are enforced before traffic reaches your database. If a connection is not restricted by IP, it still needs to authenticate successfully with valid database credentials.
|
||||
|
||||
If direct connections to your database [resolve to a IPv6 address](https://supabase.com/dashboard/project/_/settings/database), you need to add both IPv4 and IPv6 CIDRs to the list of allowed CIDRs. Network Restrictions will be applied to all database connection routes, whether pooled or direct. You will need to add both the IPv4 and IPv6 networks you want to allow. There are two exceptions: If you have been granted an extension on the IPv6 migration OR if you have purchased the [IPv4 add-on](https://supabase.com/dashboard/project/_/settings/addons), you need only add IPv4 CIDRs.
|
||||
If direct connections to your database [resolve to a IPv6 address](https://supabase.com/dashboard/project/_/database/settings), you need to add both IPv4 and IPv6 CIDRs to the list of allowed CIDRs. Network Restrictions will be applied to all database connection routes, whether pooled or direct. You will need to add both the IPv4 and IPv6 networks you want to allow. There are two exceptions: If you have been granted an extension on the IPv6 migration OR if you have purchased the [IPv4 add-on](https://supabase.com/dashboard/project/_/settings/addons), you need only add IPv4 CIDRs.
|
||||
|
||||
## To get started via the Dashboard:
|
||||
|
||||
Network restrictions can be configured in the [Database Settings](https://supabase.com/dashboard/project/_/settings/database) page. Ensure that you have [Owner or Admin permissions](/docs/guides/platform/access-control#manage-team-members) for the project that you are enabling network restrictions.
|
||||
Network restrictions can be configured in the [Database Settings](https://supabase.com/dashboard/project/_/database/settings) page. Ensure that you have [Owner or Admin permissions](/docs/guides/platform/access-control#manage-team-members) for the project that you are enabling network restrictions.
|
||||
|
||||
## To get started via the Management API:
|
||||
|
||||
|
||||
@@ -104,7 +104,7 @@ Read Replicas offer the following features:
|
||||
|
||||
Each Read Replica has its own dedicated database and API endpoints.
|
||||
|
||||
- Find the database endpoint on the [Database Settings page](/dashboard/project/_/settings/database) under **Connection Info**
|
||||
- Find the database endpoint on the [Database Settings page](/dashboard/project/_/database/settings) under **Connection Info**
|
||||
- Find the API endpoint on the [API Settings page](/dashboard/project/_/settings/api) under **Project URL**
|
||||
|
||||
Read Replicas only support `GET` requests from the [REST API](/docs/guides/api). If you are calling a read-only Postgres function through the REST API, make sure to set the `get: true` [option](/docs/reference/javascript/rpc?queryGroups=example&example=call-a-read-only-postgres-function).
|
||||
@@ -115,7 +115,7 @@ If you're using an [IPv4 add-on](/docs/guides/platform/ipv4-address#read-replica
|
||||
|
||||
### Dedicated connection pool
|
||||
|
||||
A connection pool through Supavisor is also available for each Read Replica. Find the connection string on the [Database Settings page](/dashboard/project/_/settings/database) under **Connection String**.
|
||||
A connection pool through Supavisor is also available for each Read Replica. Find the connection string on the [Database Settings page](/dashboard/project/_/database/settings) under **Connection String**.
|
||||
|
||||
### API load balancer
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ Projects need to be at least on Postgres 13.3.0 to enable SSL enforcement. You c
|
||||
|
||||
## Manage SSL enforcement via the dashboard
|
||||
|
||||
SSL enforcement can be configured via the "Enforce SSL on incoming connections" setting under the SSL Configuration section in [Database Settings page](https://supabase.com/dashboard/project/_/settings/database) of the dashboard.
|
||||
SSL enforcement can be configured via the "Enforce SSL on incoming connections" setting under the SSL Configuration section in [Database Settings page](https://supabase.com/dashboard/project/_/database/settings) of the dashboard.
|
||||
|
||||
## Manage SSL enforcement via the Management API
|
||||
|
||||
@@ -98,7 +98,7 @@ supabase ssl-enforcement --project-ref {ref} update --disable-db-ssl-enforcement
|
||||
|
||||
Postgres supports [multiple SSL modes](https://www.postgresql.org/docs/current/libpq-ssl.html#LIBPQ-SSL-PROTECTION) on the client side. These modes provide different levels of protection. Depending on your needs, it is important to verify that the SSL mode in use is performing the required level of enforcement and verification of SSL connections.
|
||||
|
||||
The strongest mode offered by Postgres is `verify-full` and this is the mode you most likely want to use when SSL enforcement is enabled. To use `verify-full` you will need to download the Supabase CA certificate for your database. The certificate is available through the dashboard under the SSL Configuration section in the [Database Settings page](/dashboard/project/_/settings/database).
|
||||
The strongest mode offered by Postgres is `verify-full` and this is the mode you most likely want to use when SSL enforcement is enabled. To use `verify-full` you will need to download the Supabase CA certificate for your database. The certificate is available through the dashboard under the SSL Configuration section in the [Database Settings page](/dashboard/project/_/database/settings).
|
||||
|
||||
Once the CA certificate has been downloaded, add it to the certificate authority list used by Postgres.
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ To connect to an Analytics Bucket, you will need
|
||||
|
||||
- An Iceberg client (Spark, PyIceberg, etc) which supports the REST Catalog interface.
|
||||
- S3 credentials to authenticate your Iceberg client with the underlying S3 Bucket.
|
||||
To create S3 Credentials go to [**Project Settings > Storage**](https://supabase.com/dashboard/project/_/settings/storage), for more information, see the [S3 Authentication Guide](https://supabase.com/docs/guides/storage/s3/authentication). We will support other authentication methods in the future.
|
||||
To create S3 Credentials go to [**Project Settings > Storage**](https://supabase.com/dashboard/project/_/storage/settings), for more information, see the [S3 Authentication Guide](https://supabase.com/docs/guides/storage/s3/authentication). We will support other authentication methods in the future.
|
||||
|
||||
- The project reference and Service key for your Supabase project.
|
||||
You can find your Service key in the Supabase Dashboard under [**Project Settings > API**.](https://supabase.com/dashboard/project/_/settings/api-keys)
|
||||
|
||||
@@ -26,40 +26,40 @@ The error codes are returned in the following format:
|
||||
|
||||
Here is the full list of error codes and their descriptions:
|
||||
|
||||
| `ErrorCode` | Description | `StatusCode` | Resolution |
|
||||
| --------------------------- | --------------------------------------------------------------- | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `NoSuchBucket` | The specified bucket does not exist. | 404 | Verify the bucket name and ensure it exists in the system, if it exists you don't have permissions to access it. |
|
||||
| `NoSuchKey` | The specified key does not exist. | 404 | Check the key name and ensure it exists in the specified bucket, if it exists you don't have permissions to access it. |
|
||||
| `NoSuchUpload` | The specified upload does not exist. | 404 | The upload ID provided might not exists or the Upload was previously aborted |
|
||||
| `InvalidJWT` | The provided JWT (JSON Web Token) is invalid. | 401 | The JWT provided might be expired or malformed, provide a valid JWT |
|
||||
| `InvalidRequest` | The request is not properly formed. | 400 | Review the request parameters and structure, ensure they meet the API's requirements, the error message will provide more details |
|
||||
| `TenantNotFound` | The specified tenant does not exist. | 404 | The Storage service had issues while provisioning, [Contact Support](https://supabase.com/dashboard/support/new) |
|
||||
| `EntityTooLarge` | The entity being uploaded is too large. | 413 | Verify the max-file-limit is equal or higher to the resource you are trying to upload, you can change this value on the [Project Setting](https://supabase.com/dashboard/project/_/settings/storage) |
|
||||
| `InternalError` | An internal server error occurred. | 500 | Investigate server logs to identify the cause of the internal error. If you think it's a Storage error [Contact Support](https://supabase.com/dashboard/support/new) |
|
||||
| `ResourceAlreadyExists` | The specified resource already exists. | 409 | Use a different name or identifier for the resource to avoid conflicts. Use `x-upsert:true` header to overwrite the resource. |
|
||||
| `InvalidBucketName` | The specified bucket name is invalid. | 400 | Ensure the bucket name follows the naming conventions and does not contain invalid characters. |
|
||||
| `InvalidKey` | The specified key is invalid. | 400 | Verify the key name and ensure it follows the naming conventions. |
|
||||
| `InvalidRange` | The specified range is not valid. | 416 | Make sure that range provided is within the file size boundary and follow the [HTTP Range spec](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Range) |
|
||||
| `InvalidMimeType` | The specified MIME type is not valid. | 400 | Provide a valid MIME type, ensure using the standard MIME type format |
|
||||
| `InvalidUploadId` | The specified upload ID is invalid. | 400 | The upload ID provided is invalid or missing. Make sure to provide a active upload ID |
|
||||
| `KeyAlreadyExists` | The specified key already exists. | 409 | Use a different key name to avoid conflicts with existing keys. Use `x-upsert:true` header to overwrite the resource. |
|
||||
| `BucketAlreadyExists` | The specified bucket already exists. | 409 | Choose a unique name for the bucket that does not conflict with existing buckets. |
|
||||
| `DatabaseTimeout` | Timeout occurred while accessing the database. | 504 | Investigate database performance and increase the default pool size. If this error still occurs, upgrade your instance |
|
||||
| `InvalidSignature` | The signature provided does not match the calculated signature. | 403 | Check that you are providing the correct signature format, for more information refer to [SignatureV4](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html) |
|
||||
| `SignatureDoesNotMatch` | The request signature does not match the calculated signature. | 403 | Check your credentials, access key id / access secret key / region that are all correct, refer to [S3 Authentication](/docs/guides/storage/s3/authentication). |
|
||||
| `AccessDenied` | Access to the specified resource is denied. | 403 | Check that you have the correct RLS policy to allow access to this resource |
|
||||
| `ResourceLocked` | The specified resource is locked. | 423 | This resource cannot be altered while there is a lock. Wait and try the request again |
|
||||
| `DatabaseError` | An error occurred while accessing the database. | 500 | Investigate database logs and system configuration to identify and address the database error. |
|
||||
| `MissingContentLength` | The Content-Length header is missing. | 411 | Ensure the Content-Length header is included in the request with the correct value. |
|
||||
| `MissingParameter` | A required parameter is missing in the request. | 400 | Provide all required parameters in the request to fulfill the API's requirements. The message field will contain more details |
|
||||
| `InvalidUploadSignature` | The provided upload signature is invalid. | 403 | The `MultiPartUpload` record was altered while the upload was ongoing, the signature do not match. Do not alter the upload record |
|
||||
| `LockTimeout` | Timeout occurred while waiting for a lock. | 423 | The lock couldn't be acquired within the specified timeout. Wait and try the request again |
|
||||
| `S3Error` | An error occurred related to Amazon S3. | - | Refer to Amazon S3 documentation or [Contact Support](https://supabase.com/dashboard/support/new) for assistance with resolving the S3 error. |
|
||||
| `S3InvalidAccessKeyId` | The provided AWS access key ID is invalid. | 403 | Verify the AWS access key ID provided and ensure it is correct and active. |
|
||||
| `S3MaximumCredentialsLimit` | The maximum number of credentials has been reached. | 400 | The maximum limit of credentials is reached. |
|
||||
| `InvalidChecksum` | The checksum of the entity does not match. | 400 | Recalculate the checksum of the entity and ensure it matches the one provided in the request. |
|
||||
| `MissingPart` | A part of the entity is missing. | 400 | Ensure all parts of the entity are included in the request before completing the operation. |
|
||||
| `SlowDown` | The request rate is too high and has been throttled. | 503 | Reduce the request rate or implement exponential backoff and retry mechanisms to handle throttling. |
|
||||
| `ErrorCode` | Description | `StatusCode` | Resolution |
|
||||
| --------------------------- | --------------------------------------------------------------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `NoSuchBucket` | The specified bucket does not exist. | 404 | Verify the bucket name and ensure it exists in the system, if it exists you don't have permissions to access it. |
|
||||
| `NoSuchKey` | The specified key does not exist. | 404 | Check the key name and ensure it exists in the specified bucket, if it exists you don't have permissions to access it. |
|
||||
| `NoSuchUpload` | The specified upload does not exist. | 404 | The upload ID provided might not exists or the Upload was previously aborted |
|
||||
| `InvalidJWT` | The provided JWT (JSON Web Token) is invalid. | 401 | The JWT provided might be expired or malformed, provide a valid JWT |
|
||||
| `InvalidRequest` | The request is not properly formed. | 400 | Review the request parameters and structure, ensure they meet the API's requirements, the error message will provide more details |
|
||||
| `TenantNotFound` | The specified tenant does not exist. | 404 | The Storage service had issues while provisioning, [Contact Support](https://supabase.com/dashboard/support/new) |
|
||||
| `EntityTooLarge` | The entity being uploaded is too large. | 413 | Verify the max-file-limit is equal or higher to the resource you are trying to upload, you can change this value on the [Project Settings](https://supabase.com/dashboard/project/_/storage/settings) |
|
||||
| `InternalError` | An internal server error occurred. | 500 | Investigate server logs to identify the cause of the internal error. If you think it's a Storage error [Contact Support](https://supabase.com/dashboard/support/new) |
|
||||
| `ResourceAlreadyExists` | The specified resource already exists. | 409 | Use a different name or identifier for the resource to avoid conflicts. Use `x-upsert:true` header to overwrite the resource. |
|
||||
| `InvalidBucketName` | The specified bucket name is invalid. | 400 | Ensure the bucket name follows the naming conventions and does not contain invalid characters. |
|
||||
| `InvalidKey` | The specified key is invalid. | 400 | Verify the key name and ensure it follows the naming conventions. |
|
||||
| `InvalidRange` | The specified range is not valid. | 416 | Make sure that range provided is within the file size boundary and follow the [HTTP Range spec](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Range) |
|
||||
| `InvalidMimeType` | The specified MIME type is not valid. | 400 | Provide a valid MIME type, ensure using the standard MIME type format |
|
||||
| `InvalidUploadId` | The specified upload ID is invalid. | 400 | The upload ID provided is invalid or missing. Make sure to provide a active upload ID |
|
||||
| `KeyAlreadyExists` | The specified key already exists. | 409 | Use a different key name to avoid conflicts with existing keys. Use `x-upsert:true` header to overwrite the resource. |
|
||||
| `BucketAlreadyExists` | The specified bucket already exists. | 409 | Choose a unique name for the bucket that does not conflict with existing buckets. |
|
||||
| `DatabaseTimeout` | Timeout occurred while accessing the database. | 504 | Investigate database performance and increase the default pool size. If this error still occurs, upgrade your instance |
|
||||
| `InvalidSignature` | The signature provided does not match the calculated signature. | 403 | Check that you are providing the correct signature format, for more information refer to [SignatureV4](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html) |
|
||||
| `SignatureDoesNotMatch` | The request signature does not match the calculated signature. | 403 | Check your credentials, access key id / access secret key / region that are all correct, refer to [S3 Authentication](/docs/guides/storage/s3/authentication). |
|
||||
| `AccessDenied` | Access to the specified resource is denied. | 403 | Check that you have the correct RLS policy to allow access to this resource |
|
||||
| `ResourceLocked` | The specified resource is locked. | 423 | This resource cannot be altered while there is a lock. Wait and try the request again |
|
||||
| `DatabaseError` | An error occurred while accessing the database. | 500 | Investigate database logs and system configuration to identify and address the database error. |
|
||||
| `MissingContentLength` | The Content-Length header is missing. | 411 | Ensure the Content-Length header is included in the request with the correct value. |
|
||||
| `MissingParameter` | A required parameter is missing in the request. | 400 | Provide all required parameters in the request to fulfill the API's requirements. The message field will contain more details |
|
||||
| `InvalidUploadSignature` | The provided upload signature is invalid. | 403 | The `MultiPartUpload` record was altered while the upload was ongoing, the signature do not match. Do not alter the upload record |
|
||||
| `LockTimeout` | Timeout occurred while waiting for a lock. | 423 | The lock couldn't be acquired within the specified timeout. Wait and try the request again |
|
||||
| `S3Error` | An error occurred related to Amazon S3. | - | Refer to Amazon S3 documentation or [Contact Support](https://supabase.com/dashboard/support/new) for assistance with resolving the S3 error. |
|
||||
| `S3InvalidAccessKeyId` | The provided AWS access key ID is invalid. | 403 | Verify the AWS access key ID provided and ensure it is correct and active. |
|
||||
| `S3MaximumCredentialsLimit` | The maximum number of credentials has been reached. | 400 | The maximum limit of credentials is reached. |
|
||||
| `InvalidChecksum` | The checksum of the entity does not match. | 400 | Recalculate the checksum of the entity and ensure it matches the one provided in the request. |
|
||||
| `MissingPart` | A part of the entity is missing. | 400 | Ensure all parts of the entity are included in the request before completing the operation. |
|
||||
| `SlowDown` | The request rate is too high and has been throttled. | 503 | Reduce the request rate or implement exponential backoff and retry mechanisms to handle throttling. |
|
||||
|
||||
## Legacy error codes
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ sidebar_label: 'S3'
|
||||
|
||||
You have two options to authenticate with Supabase Storage S3:
|
||||
|
||||
- Using the generated S3 access keys from your [project settings](/dashboard/project/_/settings/storage) (Intended exclusively for server-side use)
|
||||
- Using the generated S3 access keys from your [project settings](/dashboard/project/_/storage/settings) (Intended exclusively for server-side use)
|
||||
- Using a Session Token, which will allow you to authenticate with a user JWT token and provide limited access via Row Level Security (RLS).
|
||||
|
||||
## S3 access keys
|
||||
@@ -19,7 +19,7 @@ S3 access keys provide full access to all S3 operations across all buckets and b
|
||||
|
||||
</Admonition>
|
||||
|
||||
To authenticate with S3, generate a pair of credentials (Access Key ID and Secret Access Key), copy the endpoint and region from the [project settings page](/dashboard/project/_/settings/storage).
|
||||
To authenticate with S3, generate a pair of credentials (Access Key ID and Secret Access Key), copy the endpoint and region from the [project settings page](/dashboard/project/_/storage/settings).
|
||||
|
||||
This is all the information you need to connect to Supabase Storage using any S3-compatible service.
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ sidebar_label: 'Limits'
|
||||
|
||||
## Global file size
|
||||
|
||||
You can set the max file size across all your buckets by setting this global value in the dashboard [here](https://supabase.com/dashboard/project/_/settings/storage). For Free projects, the limit can't exceed 50 MB. On the Pro Plan and up, you can set this value to up to 500 GB. If you need more than 500 GB, [contact us](https://supabase.com/dashboard/support/new).
|
||||
You can set the max file size across all your buckets by setting this global value in the dashboard [here](https://supabase.com/dashboard/project/_/storage/settings). For Free projects, the limit can't exceed 50 MB. On the Pro Plan and up, you can set this value to up to 500 GB. If you need more than 500 GB, [contact us](https://supabase.com/dashboard/support/new).
|
||||
|
||||
| Plan | Max File Size Limit |
|
||||
| ---------- | ------------------- |
|
||||
|
||||
+1
-1
@@ -7,4 +7,4 @@ keywords = [ "password", "reset" ]
|
||||
database_id = "6e4a515c-5e70-4b92-808c-f076d47d4e35"
|
||||
---
|
||||
|
||||
You can reset your database password from the [database settings page](https://supabase.com/dashboard/project/_/settings/database) on the project dashboard.
|
||||
You can reset your database password from the [Database Settings page](https://supabase.com/dashboard/project/_/database/settings) on the project dashboard.
|
||||
|
||||
+3
-3
@@ -18,16 +18,16 @@ The subdomain will vary depending on the region a project is deployed in. The pr
|
||||
- How to update the size of the connection pool to the database:
|
||||
You can set the `Max Client Connections` field in your database settings here:
|
||||
|
||||
[https://supabase.com/dashboard/project/\_/settings/database](https://supabase.com/dashboard/project/_/settings/database)
|
||||
[https://supabase.com/dashboard/project/\_/database/settings](https://supabase.com/dashboard/project/_/database/settings)
|
||||
|
||||
- How to change the client connection limit:
|
||||
You can set the `Default Pool Size` field in your database settings:
|
||||
|
||||
[https://supabase.com/dashboard/project/\_/settings/database](https://supabase.com/dashboard/project/_/settings/database)
|
||||
[https://supabase.com/dashboard/project/\_/database/settings](https://supabase.com/dashboard/project/_/database/settings)
|
||||
|
||||
- How to use `session` mode:
|
||||
With Supavisor you can automatically use `session` mode by using the connection string with port `5432` in it.
|
||||
|
||||
You can also set the pooler port 6543 to use `session` mode in the database settings:
|
||||
|
||||
[https://supabase.com/dashboard/project/\_/settings/database](https://supabase.com/dashboard/project/_/settings/database)
|
||||
[https://supabase.com/dashboard/project/\_/database/settings](https://supabase.com/dashboard/project/_/database/settings)
|
||||
|
||||
@@ -82,7 +82,7 @@ If you believe a connection should be killed, you can do so by running the follo
|
||||
|
||||
The Supavisor Pooler is an intermediary between your clients (application servers) and the database. In transaction mode (port 6543), it can enable Postgres to share single connections with many clients, only allowing access when a query is pending. This prevents idle clients from hogging a direct connection and allows for more throughput.
|
||||
|
||||
In cases where you see significantly more pooler connections than direct connections, if you can, you should consider increasing how many direct connections the pooler is allowed to manage in the [Dashboard's Database Settings](/dashboard/project/_/settings/database):
|
||||
In cases where you see significantly more pooler connections than direct connections, if you can, you should consider increasing how many direct connections the pooler is allowed to manage in the [Dashboard's Database Settings](/dashboard/project/_/database/settings):
|
||||
|
||||
.
|
||||
|
||||
|
||||
+1
-1
@@ -22,7 +22,7 @@ All Supabase databases provide a direct connection string that maps to an IPv6 a
|
||||
|
||||
Here are your options if your server platform doesn't support IPv6:
|
||||
|
||||
- Use the Supavisor Connection String (available in the [Dashboard](https://supabase.com/dashboard/project/_/settings/database)).
|
||||
- Use the Supavisor Connection String (available in the [Dashboard](https://supabase.com/dashboard/project/_/database/settings)).
|
||||
- Use the [Supabase Client libraries](https://supabase.com/docs/guides/api/rest/client-libs), which are IPv4 compatible.
|
||||
- Enable the [dedicated IPv4 Add-On](https://supabase.com/dashboard/project/_/settings/addons) (available to Pro and above organizations)
|
||||
|
||||
|
||||
@@ -129,7 +129,7 @@ No, it doesn't. Let's break it down:
|
||||
|
||||
### **How to change pool size**
|
||||
|
||||
In the [Dashboard's Database Settings](https://supabase.com/dashboard/project/_/settings/database), you can configure Supavisor's "Pool Size":
|
||||
In the [Dashboard's Database Settings](https://supabase.com/dashboard/project/_/database/settings), you can configure Supavisor's "Pool Size":
|
||||
|
||||
<img
|
||||
width="673"
|
||||
|
||||
@@ -11,7 +11,7 @@ You can view the max permissible upload size for your plan in the [docs](https:/
|
||||
|
||||
## There are two ways to control the max upload sizes:
|
||||
|
||||
The first way is through the [global storage settings](https://supabase.com/dashboard/project/_/settings/storage):
|
||||
The first way is through the [global storage settings](https://supabase.com/dashboard/project/_/storage/settings):
|
||||
|
||||
<img
|
||||
width="920"
|
||||
|
||||
@@ -144,7 +144,7 @@ export const ConnectionPanel = ({
|
||||
>
|
||||
<Button asChild type="default" className="mt-2">
|
||||
<Link
|
||||
href={`/project/${projectRef}/settings/database#connection-pooler`}
|
||||
href={`/project/${projectRef}/database/settings#connection-pooler`}
|
||||
className="text-xs text-light hover:text-foreground"
|
||||
>
|
||||
Database Settings
|
||||
|
||||
@@ -202,7 +202,7 @@ export const DatabaseConnectionString = () => {
|
||||
}
|
||||
const poolerSettingsUrl = {
|
||||
text: 'Pooler settings',
|
||||
url: `/project/${projectRef}/settings/database#connection-pooling`,
|
||||
url: `/project/${projectRef}/database/settings#connection-pooling`,
|
||||
}
|
||||
const buttonLinks = !ipv4Addon
|
||||
? [ipv4AddOnUrl, ...(sharedPoolerPreferred ? [poolerSettingsUrl] : [])]
|
||||
@@ -526,7 +526,7 @@ export const DatabaseConnectionString = () => {
|
||||
<p className="text-sm text-foreground-lighter">
|
||||
You may reset your database password in your project's{' '}
|
||||
<InlineLink
|
||||
href={`/project/${projectRef}/settings/database`}
|
||||
href={`/project/${projectRef}/database/settings`}
|
||||
className="text-foreground-lighter hover:text-foreground"
|
||||
>
|
||||
Database Settings
|
||||
|
||||
@@ -68,7 +68,7 @@ const Introduction = ({ selectedLang }: IntroductionProps) => {
|
||||
If you still want to use GraphQL, you can. Supabase provides you with a full Postgres
|
||||
database, so as long as your middleware can connect to the database then you can still
|
||||
use the tools you love. You can find the database connection details{' '}
|
||||
<Link href={`/project/${projectRef}/settings/database`}>in the settings.</Link>
|
||||
<Link href={`/project/${projectRef}/database/settings`}>in the settings.</Link>
|
||||
</p>
|
||||
</article>
|
||||
<article className="code">
|
||||
|
||||
@@ -222,7 +222,7 @@ export const lintInfoMap: LintInfo[] = [
|
||||
name: 'ssl_not_enforced',
|
||||
title: 'SSL not enforced',
|
||||
icon: <Ruler className="text-foreground-muted" size={15} strokeWidth={1} />,
|
||||
link: ({ projectRef }) => `/project/${projectRef}/settings/database`,
|
||||
link: ({ projectRef }) => `/project/${projectRef}/database/settings`,
|
||||
linkText: 'View settings',
|
||||
docsLink: 'https://supabase.com/docs/guides/platform/ssl-enforcement',
|
||||
category: 'security',
|
||||
@@ -231,7 +231,7 @@ export const lintInfoMap: LintInfo[] = [
|
||||
name: 'network_restrictions_not_set',
|
||||
title: 'No network restrictions',
|
||||
icon: <Ruler className="text-foreground-muted" size={15} strokeWidth={1} />,
|
||||
link: ({ projectRef }) => `/project/${projectRef}/settings/database`,
|
||||
link: ({ projectRef }) => `/project/${projectRef}/database/settings`,
|
||||
linkText: 'View settings',
|
||||
docsLink: 'https://supabase.com/docs/guides/platform/network-restrictions',
|
||||
category: 'security',
|
||||
|
||||
@@ -410,7 +410,7 @@ You can generate types from your database either through the [Supabase CLI](http
|
||||
If you have a GraphQL background, you might be wondering if you can fetch your data in a single round-trip. The answer is yes! The syntax is very similar. This example shows how you might achieve the same thing with Apollo GraphQL and Supabase.
|
||||
|
||||
Still want GraphQL?
|
||||
If you still want to use GraphQL, you can. Supabase provides you with a full Postgres database, so as long as your middleware can connect to the database then you can still use the tools you love. You can find the database connection details [in the settings](/project/[ref]/settings/database).
|
||||
If you still want to use GraphQL, you can. Supabase provides you with a full Postgres database, so as long as your middleware can connect to the database then you can still use the tools you love. You can find the database connection details [in the settings](/project/[ref]/database/settings).
|
||||
`,
|
||||
js: (apikey?: string, endpoint?: string) => `
|
||||
// With Apollo GraphQL
|
||||
|
||||
@@ -1,70 +0,0 @@
|
||||
import { useParams } from 'common'
|
||||
import Link from 'next/link'
|
||||
import { Button, Badge, Menu } from 'ui'
|
||||
import { ArrowUpRight } from 'lucide-react'
|
||||
import { ProductMenu } from 'components/ui/ProductMenu'
|
||||
import type { ProductMenuGroup } from 'components/ui/ProductMenu/ProductMenu.types'
|
||||
import { Sidebar } from 'components/interfaces/Sidebar'
|
||||
|
||||
export const ApiKeysMoved = () => {
|
||||
const { ref: projectRef } = useParams()
|
||||
|
||||
// Create menu structure matching the ProductMenu expected format
|
||||
const mockMenu: ProductMenuGroup[] = [
|
||||
{
|
||||
title: 'Project Settings',
|
||||
items: [
|
||||
{ name: 'General', key: 'general', url: '#' },
|
||||
{ name: 'Compute and Disk', key: 'compute-and-disk', url: '#' },
|
||||
{ name: 'Infrastructure', key: 'infrastructure', url: '#' },
|
||||
{ name: 'Integrations', key: 'integrations', url: '#' },
|
||||
{ name: 'API Keys', key: 'api-keys', url: '#', label: 'NEW' },
|
||||
{ name: 'JWT Keys', key: 'jwt-keys', url: '#', label: 'NEW' },
|
||||
{ name: 'Add Ons', key: 'addons', url: '#' },
|
||||
{
|
||||
name: 'Vault',
|
||||
key: 'vault',
|
||||
url: '#',
|
||||
label: 'Alpha',
|
||||
rightIcon: <ArrowUpRight strokeWidth={1} className="h-4 w-4" />,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Configuration',
|
||||
items: [{ name: 'Database', key: 'database', url: '#' }],
|
||||
},
|
||||
]
|
||||
|
||||
return (
|
||||
<div className="pb-36 pt-10 relative w-full flex flex-col xl:flex-row border xl:py-10 px-10 rounded-md overflow-hidden">
|
||||
<div className="flex flex-col gap-2 z-[2]">
|
||||
<p className="text-sm text-foreground">API keys and JWT settings have moved</p>
|
||||
<p className="text-sm text-foreground-lighter mb-4">
|
||||
They can now be found in their own respective pages.
|
||||
</p>
|
||||
<div className="flex flex-row gap-4">
|
||||
<Link href={`/project/${projectRef}/settings/api-keys`}>
|
||||
<Button type="default">Go to API Keys</Button>
|
||||
</Link>
|
||||
<Link href={`/project/${projectRef}/settings/api-keys`}>
|
||||
<Button type="default">Go to JWT Keys</Button>
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Menu illustration using the actual ProductMenu component */}
|
||||
|
||||
<div className="absolute right-20 -top-[80px] w-fit scale-80 origin-top-right">
|
||||
<div className="absolute top-0 right-0 bottom-0 left-0 bg-gradient-to-r from-transparent to-background-200/75 z-10" />
|
||||
|
||||
<div className="bg-studio-sidebar border rounded-md overflow-hidden shadow-sm opacity-75 flex flex-row w-[280px]">
|
||||
<div className="opacity-50">
|
||||
<Sidebar />
|
||||
</div>
|
||||
<ProductMenu page="api-keys" menu={mockMenu} />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -15,7 +15,6 @@ import { useReadReplicasQuery } from 'data/read-replicas/replicas-query'
|
||||
import { PROJECT_STATUS } from 'lib/constants'
|
||||
import { useDatabaseSelectorStateSnapshot } from 'state/database-selector'
|
||||
import { Badge, Input } from 'ui'
|
||||
import { ApiKeysMoved } from './ApiKeysMoved'
|
||||
import { PostgrestConfig } from './PostgrestConfig'
|
||||
|
||||
const ServiceList = () => {
|
||||
@@ -106,10 +105,6 @@ const ServiceList = () => {
|
||||
</Panel>
|
||||
</section>
|
||||
|
||||
<section className="mb-8">
|
||||
<ApiKeysMoved />
|
||||
</section>
|
||||
|
||||
<section id="postgrest-config">
|
||||
<PostgrestConfig />
|
||||
</section>
|
||||
|
||||
@@ -136,7 +136,7 @@ const IPv4SidePanel = () => {
|
||||
<p className="text-sm">
|
||||
If you are connecting via the Shared connection pooler, you do not need this add-on as
|
||||
our pooler resolves to IPv4 addresses. You can check your connection info in your{' '}
|
||||
<InlineLink href={`/project/${projectRef}/settings/database#connection-pooler`}>
|
||||
<InlineLink href={`/project/${projectRef}/database/settings#connection-pooler`}>
|
||||
project database settings
|
||||
</InlineLink>
|
||||
.
|
||||
|
||||
+1
-1
@@ -50,7 +50,7 @@ export const SimpleConfigurationDetails = ({ bucketName }: { bucketName: string
|
||||
<Card className="flex flex-col gap-6 p-6 pb-0">
|
||||
<p className="text-sm text-foreground-light mb-4">
|
||||
To get AWS credentials, you can create them using the{' '}
|
||||
<Link href={`/project/${project?.ref}/settings/storage`}>
|
||||
<Link href={`/project/${project?.ref}/storage/settings`}>
|
||||
<a className="underline ">S3 Access Keys</a>
|
||||
</Link>{' '}
|
||||
feature.
|
||||
|
||||
@@ -383,7 +383,7 @@ const CreateBucketModal = ({ visible, onClose }: CreateBucketModalProps) => {
|
||||
<p className="text-foreground-light text-sm">
|
||||
Note: Individual bucket uploads will still be capped at the{' '}
|
||||
<Link
|
||||
href={`/project/${ref}/settings/storage`}
|
||||
href={`/project/${ref}/storage/settings`}
|
||||
className="font-bold underline"
|
||||
>
|
||||
global upload limit
|
||||
|
||||
@@ -228,7 +228,7 @@ const EditBucketModal = ({ visible, bucket, onClose }: EditBucketModalProps) =>
|
||||
<p className="text-foreground-light text-sm">
|
||||
Note: Individual bucket upload will still be capped at the{' '}
|
||||
<Link
|
||||
href={`/project/${ref}/settings/storage`}
|
||||
href={`/project/${ref}/storage/settings`}
|
||||
className="font-bold underline"
|
||||
>
|
||||
global upload limit
|
||||
|
||||
@@ -16,6 +16,11 @@ export enum STORAGE_SORT_BY {
|
||||
LAST_ACCESSED_AT = 'last_accessed_at',
|
||||
}
|
||||
|
||||
export enum STORAGE_BUCKET_SORT {
|
||||
ALPHABETICAL = 'alphabetical',
|
||||
CREATED_AT = 'created_at',
|
||||
}
|
||||
|
||||
export enum STORAGE_SORT_BY_ORDER {
|
||||
ASC = 'asc',
|
||||
DESC = 'desc',
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
import { PermissionAction } from '@supabase/shared-types/out/constants'
|
||||
import { useLocalStorage } from '@uidotdev/usehooks'
|
||||
import { ArrowUpRight, Edit } from 'lucide-react'
|
||||
import { Edit } from 'lucide-react'
|
||||
import Link from 'next/link'
|
||||
import { useRouter } from 'next/router'
|
||||
import { useState } from 'react'
|
||||
|
||||
import { useParams } from 'common'
|
||||
import { DeleteBucketModal } from 'components/interfaces/Storage'
|
||||
import CreateBucketModal from 'components/interfaces/Storage/CreateBucketModal'
|
||||
import EditBucketModal from 'components/interfaces/Storage/EditBucketModal'
|
||||
import { DeleteBucketModal } from 'components/interfaces/Storage'
|
||||
import { EmptyBucketModal } from 'components/interfaces/Storage/EmptyBucketModal'
|
||||
import { ButtonTooltip } from 'components/ui/ButtonTooltip'
|
||||
import ShimmeringLoader from 'components/ui/ShimmeringLoader'
|
||||
import { Bucket, useBucketsQuery } from 'data/storage/buckets-query'
|
||||
import { useCheckPermissions } from 'hooks/misc/useCheckPermissions'
|
||||
import { useSelectedProject } from 'hooks/misc/useSelectedProject'
|
||||
import { useSelectedProjectQuery } from 'hooks/misc/useSelectedProject'
|
||||
import { useStorageExplorerStateSnapshot } from 'state/storage-explorer'
|
||||
import { Alert_Shadcn_, AlertDescription_Shadcn_, AlertTitle_Shadcn_, Menu } from 'ui'
|
||||
import {
|
||||
InnerSideBarEmptyPanel,
|
||||
@@ -28,8 +28,9 @@ import BucketRow from './BucketRow'
|
||||
const StorageMenu = () => {
|
||||
const router = useRouter()
|
||||
const { ref, bucketId } = useParams()
|
||||
const projectDetails = useSelectedProject()
|
||||
const isBranch = projectDetails?.parent_project_ref !== undefined
|
||||
const { data: project } = useSelectedProjectQuery()
|
||||
const snap = useStorageExplorerStateSnapshot()
|
||||
const isBranch = project?.parent_project_ref !== undefined
|
||||
|
||||
const [searchText, setSearchText] = useState<string>('')
|
||||
const [showCreateBucketModal, setShowCreateBucketModal] = useState(false)
|
||||
@@ -38,11 +39,6 @@ const StorageMenu = () => {
|
||||
const [selectedBucketToDelete, setSelectedBucketToDelete] = useState<Bucket>()
|
||||
const canCreateBuckets = useCheckPermissions(PermissionAction.STORAGE_WRITE, '*')
|
||||
|
||||
const [sort, setSort] = useLocalStorage<'alphabetical' | 'created-at'>(
|
||||
'storage-explorer-sort',
|
||||
'created-at'
|
||||
)
|
||||
|
||||
const page = router.pathname.split('/')[4] as
|
||||
| undefined
|
||||
| 'policies'
|
||||
@@ -58,7 +54,7 @@ const StorageMenu = () => {
|
||||
isSuccess,
|
||||
} = useBucketsQuery({ projectRef: ref })
|
||||
const sortedBuckets =
|
||||
sort === 'alphabetical'
|
||||
snap.sortBucket === 'alphabetical'
|
||||
? buckets.sort((a, b) =>
|
||||
a.name.toLowerCase().trim().localeCompare(b.name.toLowerCase().trim())
|
||||
)
|
||||
@@ -103,8 +99,8 @@ const StorageMenu = () => {
|
||||
}}
|
||||
>
|
||||
<InnerSideBarFilterSortDropdown
|
||||
value={sort}
|
||||
onValueChange={(value: any) => setSort(value)}
|
||||
value={snap.sortBucket}
|
||||
onValueChange={(value: any) => snap.setSortBucket(value)}
|
||||
>
|
||||
<InnerSideBarFilterSortDropdownItem
|
||||
key="alphabetical"
|
||||
@@ -193,12 +189,9 @@ const StorageMenu = () => {
|
||||
<p className="truncate">Policies</p>
|
||||
</Menu.Item>
|
||||
</Link>
|
||||
<Link href={`/project/${ref}/settings/storage`}>
|
||||
<Menu.Item rounded>
|
||||
<div className="flex items-center justify-between">
|
||||
<p className="truncate">Settings</p>
|
||||
<ArrowUpRight strokeWidth={1} className="h-4 w-4" />
|
||||
</div>
|
||||
<Link href={`/project/${ref}/storage/settings`}>
|
||||
<Menu.Item rounded active={page === 'settings'}>
|
||||
<p className="truncate">Settings</p>
|
||||
</Menu.Item>
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
@@ -85,7 +85,7 @@ export const generateDatabaseMenu = (
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Access Control',
|
||||
title: 'Configuration',
|
||||
items: [
|
||||
{ name: 'Roles', key: 'roles', url: `/project/${ref}/database/roles`, items: [] },
|
||||
...(columnLevelPrivileges
|
||||
@@ -106,6 +106,7 @@ export const generateDatabaseMenu = (
|
||||
rightIcon: <ArrowUpRight strokeWidth={1} className="h-4 w-4" />,
|
||||
items: [],
|
||||
},
|
||||
{ name: 'Settings', key: 'settings', url: `/project/${ref}/database/settings`, items: [] },
|
||||
],
|
||||
},
|
||||
{
|
||||
|
||||
@@ -37,8 +37,8 @@ import { UpgradingState } from './UpgradingState'
|
||||
// if their project is not responding well for any reason. Eventually needs a bit of an overhaul
|
||||
const routesToIgnoreProjectDetailsRequest = [
|
||||
'/project/[ref]/settings/general',
|
||||
'/project/[ref]/settings/database',
|
||||
'/project/[ref]/settings/storage',
|
||||
'/project/[ref]/database/settings',
|
||||
'/project/[ref]/storage/settings',
|
||||
'/project/[ref]/settings/infrastructure',
|
||||
'/project/[ref]/settings/addons',
|
||||
]
|
||||
@@ -53,7 +53,7 @@ const routesToIgnoreDBConnection = [
|
||||
const routesToIgnorePostgrestConnection = [
|
||||
'/project/[ref]/reports',
|
||||
'/project/[ref]/settings/general',
|
||||
'/project/[ref]/settings/database',
|
||||
'/project/[ref]/database/settings',
|
||||
'/project/[ref]/settings/infrastructure',
|
||||
'/project/[ref]/settings/addons',
|
||||
]
|
||||
|
||||
@@ -19,7 +19,7 @@ export function useProjectSettingsGotoCommands(options?: CommandOptions) {
|
||||
{
|
||||
id: 'nav-project-settings-database',
|
||||
name: 'Database Settings',
|
||||
route: `/project/${ref}/settings/database`,
|
||||
route: `/project/${ref}/database/settings`,
|
||||
defaultHidden: true,
|
||||
},
|
||||
{
|
||||
@@ -37,7 +37,7 @@ export function useProjectSettingsGotoCommands(options?: CommandOptions) {
|
||||
{
|
||||
id: 'nav-project-settings-storage',
|
||||
name: 'Storage Settings',
|
||||
route: `/project/${ref}/settings/storage`,
|
||||
route: `/project/${ref}/storage/settings`,
|
||||
defaultHidden: true,
|
||||
},
|
||||
{
|
||||
@@ -97,13 +97,13 @@ export function useProjectSettingsGotoCommands(options?: CommandOptions) {
|
||||
{
|
||||
id: 'nav-project-settings-network-restrictions',
|
||||
name: 'Network restrictions',
|
||||
route: `/project/${ref}/settings/database#network-restrictions`,
|
||||
route: `/project/${ref}/database/settings#network-restrictions`,
|
||||
defaultHidden: true,
|
||||
},
|
||||
{
|
||||
id: 'nav-project-settings-banned-ips',
|
||||
name: 'Banned IPs',
|
||||
route: `/project/${ref}/settings/database#banned-ips`,
|
||||
route: `/project/${ref}/database/settings#banned-ips`,
|
||||
defaultHidden: true,
|
||||
},
|
||||
{
|
||||
|
||||
@@ -57,6 +57,18 @@ export const generateSettingsMenu = (
|
||||
url: `/project/${ref}/settings/integrations`,
|
||||
items: [],
|
||||
},
|
||||
{
|
||||
name: `Log Drains`,
|
||||
key: `log-drains`,
|
||||
url: `/project/${ref}/settings/log-drains`,
|
||||
items: [],
|
||||
},
|
||||
{
|
||||
name: 'Data API',
|
||||
key: 'api',
|
||||
url: isProjectBuilding ? buildingUrl : `/project/${ref}/settings/api`,
|
||||
items: [],
|
||||
},
|
||||
{
|
||||
name: 'API Keys',
|
||||
key: 'api-keys',
|
||||
@@ -95,14 +107,9 @@ export const generateSettingsMenu = (
|
||||
{
|
||||
name: 'Database',
|
||||
key: 'database',
|
||||
url: isProjectBuilding ? buildingUrl : `/project/${ref}/settings/database`,
|
||||
items: [],
|
||||
},
|
||||
{
|
||||
name: 'Data API',
|
||||
key: 'api',
|
||||
url: isProjectBuilding ? buildingUrl : `/project/${ref}/settings/api`,
|
||||
url: isProjectBuilding ? buildingUrl : `/project/${ref}/database/settings`,
|
||||
items: [],
|
||||
rightIcon: <ArrowUpRight strokeWidth={1} className="h-4 w-4" />,
|
||||
},
|
||||
...(IS_PLATFORM && authEnabled
|
||||
? [
|
||||
@@ -119,8 +126,9 @@ export const generateSettingsMenu = (
|
||||
{
|
||||
name: 'Storage',
|
||||
key: 'storage',
|
||||
url: `/project/${ref}/settings/storage`,
|
||||
url: `/project/${ref}/storage/settings`,
|
||||
items: [],
|
||||
rightIcon: <ArrowUpRight strokeWidth={1} className="h-4 w-4" />,
|
||||
},
|
||||
]
|
||||
: []),
|
||||
@@ -135,16 +143,6 @@ export const generateSettingsMenu = (
|
||||
},
|
||||
]
|
||||
: []),
|
||||
...(IS_PLATFORM
|
||||
? [
|
||||
{
|
||||
name: `Log Drains`,
|
||||
key: `log-drains`,
|
||||
url: `/project/${ref}/settings/log-drains`,
|
||||
items: [],
|
||||
},
|
||||
]
|
||||
: []),
|
||||
],
|
||||
},
|
||||
|
||||
@@ -156,6 +154,7 @@ export const generateSettingsMenu = (
|
||||
key: 'subscription',
|
||||
url: `/org/${organization?.slug}/billing`,
|
||||
items: [],
|
||||
rightIcon: <ArrowUpRight strokeWidth={1} className="h-4 w-4" />,
|
||||
},
|
||||
|
||||
{
|
||||
@@ -163,6 +162,7 @@ export const generateSettingsMenu = (
|
||||
key: 'usage',
|
||||
url: `/org/${organization?.slug}/usage?projectRef=${ref}`,
|
||||
items: [],
|
||||
rightIcon: <ArrowUpRight strokeWidth={1} className="h-4 w-4" />,
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { ReactNode } from 'react'
|
||||
|
||||
import StorageMenu from 'components/interfaces/Storage/StorageMenu'
|
||||
import { withAuth } from 'hooks/misc/withAuth'
|
||||
import ProjectLayout from '../ProjectLayout/ProjectLayout'
|
||||
import StorageMenu from '../../interfaces/Storage/StorageMenu'
|
||||
|
||||
export interface StorageLayoutProps {
|
||||
title: string
|
||||
|
||||
+2
-2
@@ -79,12 +79,12 @@ export const RESOURCE_WARNING_MESSAGES: Record<string, ResourceWarningMessage> =
|
||||
title:
|
||||
'Your project is about to exhaust its available disk space, and may become unresponsive once fully exhausted',
|
||||
description:
|
||||
'You can opt to increase your disk size up to 200GB on the database settings page.',
|
||||
'You can opt to increase your disk size up to 200GB on the Database Settings page.',
|
||||
},
|
||||
critical: {
|
||||
title: 'Your project has exhausted its available disk space, and may become unresponsive',
|
||||
description:
|
||||
'You can opt to increase your disk size up to 200GB on the database settings page.',
|
||||
'You can opt to increase your disk size up to 200GB on the Database Settings page.',
|
||||
},
|
||||
},
|
||||
cardContent: {
|
||||
|
||||
@@ -144,6 +144,16 @@ const nextConfig = {
|
||||
destination: '/project/:ref/storage/buckets',
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: '/project/:ref/settings/storage',
|
||||
destination: '/project/:ref/storage/settings',
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: '/project/:ref/settings/database',
|
||||
destination: '/project/:ref/database/settings',
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: '/project/:ref/settings',
|
||||
destination: '/project/:ref/settings/general',
|
||||
|
||||
+2
-2
@@ -8,7 +8,7 @@ import DiskSizeConfiguration from 'components/interfaces/Settings/Database/DiskS
|
||||
import { PoolingModesModal } from 'components/interfaces/Settings/Database/PoolingModesModal'
|
||||
import SSLConfiguration from 'components/interfaces/Settings/Database/SSLConfiguration'
|
||||
import DefaultLayout from 'components/layouts/DefaultLayout'
|
||||
import SettingsLayout from 'components/layouts/ProjectSettingsLayout/SettingsLayout'
|
||||
import DatabaseLayout from 'components/layouts/DatabaseLayout/DatabaseLayout'
|
||||
import { ScaffoldContainer, ScaffoldHeader, ScaffoldTitle } from 'components/layouts/Scaffold'
|
||||
import { useIsAwsCloudProvider, useIsAwsK8sCloudProvider } from 'hooks/misc/useSelectedProject'
|
||||
import type { NextPageWithLayout } from 'types'
|
||||
@@ -53,7 +53,7 @@ const ProjectSettings: NextPageWithLayout = () => {
|
||||
|
||||
ProjectSettings.getLayout = (page) => (
|
||||
<DefaultLayout>
|
||||
<SettingsLayout title="Database">{page}</SettingsLayout>
|
||||
<DatabaseLayout title="Database">{page}</DatabaseLayout>
|
||||
</DefaultLayout>
|
||||
)
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import { ApiKeysMoved } from 'components/interfaces/Settings/API/ApiKeysMoved'
|
||||
import ServiceList from 'components/interfaces/Settings/API/ServiceList'
|
||||
import DefaultLayout from 'components/layouts/DefaultLayout'
|
||||
import SettingsLayout from 'components/layouts/ProjectSettingsLayout/SettingsLayout'
|
||||
|
||||
@@ -13,8 +13,7 @@ const ProjectSettings: NextPageWithLayout = () => {
|
||||
<ProductEmptyState title="Authentication settings have moved">
|
||||
<div className="text-sm">
|
||||
<p className="text-foreground-light mb-4">
|
||||
All settings are now under configuration within the Authentication page. All other product
|
||||
settings will follow in the coming weeks.
|
||||
All settings are now under configuration within the Authentication page.
|
||||
</p>
|
||||
<Link
|
||||
href={`/project/${ref}/auth/providers`}
|
||||
@@ -59,7 +58,7 @@ const ProjectSettings: NextPageWithLayout = () => {
|
||||
<ChevronRight strokeWidth={1.5} size={16} />
|
||||
</Link>
|
||||
<Link
|
||||
href={`/project/${ref}/settings/api#jwt-settings`}
|
||||
href={`/project/${ref}/settings/jwt`}
|
||||
className="block py-2 hover:text-foreground border-b flex items-center justify-between"
|
||||
>
|
||||
Access token expiry
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
import DefaultLayout from 'components/layouts/DefaultLayout'
|
||||
import SettingsLayout from 'components/layouts/ProjectSettingsLayout/SettingsLayout'
|
||||
import StorageLayout from 'components/layouts/StorageLayout/StorageLayout'
|
||||
import {
|
||||
ScaffoldContainer,
|
||||
ScaffoldDescription,
|
||||
@@ -29,7 +29,7 @@ const PageLayout: NextPageWithLayout = () => {
|
||||
|
||||
PageLayout.getLayout = (page) => (
|
||||
<DefaultLayout>
|
||||
<SettingsLayout title="Settings">{page}</SettingsLayout>
|
||||
<StorageLayout title="Settings">{page}</StorageLayout>
|
||||
</DefaultLayout>
|
||||
)
|
||||
export default PageLayout
|
||||
@@ -9,6 +9,7 @@ import { createClient, SupabaseClient } from '@supabase/supabase-js'
|
||||
import { BlobReader, BlobWriter, ZipWriter } from '@zip.js/zip.js'
|
||||
import { LOCAL_STORAGE_KEYS } from 'common'
|
||||
import {
|
||||
STORAGE_BUCKET_SORT,
|
||||
STORAGE_ROW_STATUS,
|
||||
STORAGE_ROW_TYPES,
|
||||
STORAGE_SORT_BY,
|
||||
@@ -63,6 +64,7 @@ const DEFAULT_PREFERENCES = {
|
||||
view: STORAGE_VIEWS.COLUMNS,
|
||||
sortBy: STORAGE_SORT_BY.NAME,
|
||||
sortByOrder: STORAGE_SORT_BY_ORDER.ASC,
|
||||
sortBucket: STORAGE_BUCKET_SORT.CREATED_AT,
|
||||
}
|
||||
const STORAGE_PROGRESS_INFO_TEXT = "Do not close the browser until it's completed"
|
||||
|
||||
@@ -83,7 +85,7 @@ function createStorageExplorerState({
|
||||
supabaseClient?: SupabaseClient<any, 'public', any>
|
||||
}) {
|
||||
const localStorageKey = LOCAL_STORAGE_KEYS.STORAGE_PREFERENCE(projectRef)
|
||||
const { view, sortBy, sortByOrder } =
|
||||
const { view, sortBy, sortByOrder, sortBucket } =
|
||||
(typeof window !== 'undefined' && tryParseJson(localStorage?.getItem(localStorageKey))) ||
|
||||
DEFAULT_PREFERENCES
|
||||
|
||||
@@ -177,6 +179,12 @@ function createStorageExplorerState({
|
||||
state.updateExplorerPreference()
|
||||
},
|
||||
|
||||
sortBucket,
|
||||
setSortBucket: async (value: STORAGE_BUCKET_SORT) => {
|
||||
state.sortBucket = value
|
||||
state.updateExplorerPreference()
|
||||
},
|
||||
|
||||
sortBy,
|
||||
setSortBy: async (value: STORAGE_SORT_BY) => {
|
||||
state.sortBy = value
|
||||
@@ -204,8 +212,11 @@ function createStorageExplorerState({
|
||||
|
||||
updateExplorerPreference: () => {
|
||||
const localStorageKey = LOCAL_STORAGE_KEYS.STORAGE_PREFERENCE(projectRef)
|
||||
const { view, sortBy, sortByOrder } = state
|
||||
localStorage.setItem(localStorageKey, JSON.stringify({ view, sortBy, sortByOrder }))
|
||||
const { view, sortBy, sortByOrder, sortBucket } = state
|
||||
localStorage.setItem(
|
||||
localStorageKey,
|
||||
JSON.stringify({ view, sortBy, sortByOrder, sortBucket })
|
||||
)
|
||||
},
|
||||
|
||||
// Functions that manage the UI of the Storage Explorer
|
||||
@@ -971,7 +982,7 @@ function createStorageExplorerState({
|
||||
</p>
|
||||
<p className="text-foreground-light">
|
||||
You can change the global file size upload limit in{' '}
|
||||
<InlineLink href={`/project/${state.projectRef}/settings/storage`}>
|
||||
<InlineLink href={`/project/${state.projectRef}/storage/settings`}>
|
||||
Storage settings
|
||||
</InlineLink>
|
||||
.
|
||||
|
||||
@@ -67,7 +67,7 @@ Go to [database.new](https://database.new) and create a new Supabase project. Sa
|
||||
|
||||
When your project is up and running, navigate to the [project connect page](/dashboard/project/_?showConnect=true) to find the URI connection string.
|
||||
|
||||
Laravel ships with a Postgres adapter out of the box, you can simply configure it via the environment variables. You can find the database URL in your [Supabase Dashboard](/dashboard/project/_/settings/database).
|
||||
Laravel ships with a Postgres adapter out of the box, you can simply configure it via the environment variables. You can find the database URL in your [Supabase Dashboard](/dashboard/project/_/database/settings).
|
||||
|
||||
```bash .env
|
||||
DB_CONNECTION=pgsql
|
||||
|
||||
@@ -56,7 +56,7 @@ Go to [database.new](https://database.new) and create a new Supabase project. Sa
|
||||
|
||||
When your project is up and running, navigate to the [project connect page](https://supabase.com/dashboard/project/_?showConnect=true) to find the URI connection string.
|
||||
|
||||
Rails ships with a Postgres adapter included, you can simply configure it via the environment variables. You can find the database URL in your [Supabase Dashboard](/dashboard/project/_/settings/database).
|
||||
Rails ships with a Postgres adapter included, you can simply configure it via the environment variables. You can find the database URL in your [Supabase Dashboard](/dashboard/project/_/database/settings).
|
||||
|
||||
```bash Terminal
|
||||
export DATABASE_URL=postgres://postgres.xxxx:password@xxxx.pooler.supabase.com:5432/postgres
|
||||
|
||||
+1
-1
@@ -41,7 +41,7 @@ If you prefer video guide, you can follow along below. And make sure to subscrib
|
||||
|
||||
FerretDB provides a [Docker image](https://github.com/ferretdb/FerretDB/pkgs/container/ferretdb) allowing us to run it locally, for example via [Orbstack](https://orbstack.dev/), with a couple simple commands.
|
||||
|
||||
FerretDB only requires the Postgres database URI to be provided as the `FERRETDB_POSTGRESQL_URL` environment variable. Every Supabase project comes with a full Postgres database. You can find the connection URI string in your [Supabase Dashboard](https://supabase.com/dashboard/project/_/settings/database).
|
||||
FerretDB only requires the Postgres database URI to be provided as the `FERRETDB_POSTGRESQL_URL` environment variable. Every Supabase project comes with a full Postgres database. You can find the connection URI string in your [Supabase Dashboard](https://supabase.com/dashboard/project/_/database/settings).
|
||||
|
||||
Make sure **Use connection pooling** is checked and **Session mode** is selected. Then copy the URI. Replace the password placeholder with your saved database password.
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ With these basic terms defined, let's take a look at the permissions model in Po
|
||||
|
||||
# Setting Up
|
||||
|
||||
Create a new Supabase project (or use an existing one) and copy its connection string URI from the [Database Settings page](https://supabase.com/dashboard/project/_/settings/database). The URI looks like the following:
|
||||
Create a new Supabase project (or use an existing one) and copy its connection string URI from the [Database Settings page](https://supabase.com/dashboard/project/_/database/settings). The URI looks like the following:
|
||||
|
||||
```bash
|
||||
postgres://[USER].[YOUR-PROJECT-REF]:[YOUR-PASSWORD]@[REGION-SUBDOMAIN].pooler.supabase.com:5432/postgres
|
||||
|
||||
@@ -44,7 +44,7 @@ The protocol works on the cloud, local development, and self-hosting. Check out
|
||||
|
||||
To authenticate with Supabase S3 you have 2 options:
|
||||
|
||||
1. **The standard `access_key` and `secret_key` credentials.** You can generate these from the [storage settings page](/dashboard/project/_/settings/storage). This authentication method is widely compatible with tools supporting the S3 protocol. It is also meant to be used _exclusively serverside_ since it provides full access to your Storage resources.
|
||||
1. **The standard `access_key` and `secret_key` credentials.** You can generate these from the [storage settings page](/dashboard/project/_/storage/settings). This authentication method is widely compatible with tools supporting the S3 protocol. It is also meant to be used _exclusively serverside_ since it provides full access to your Storage resources.
|
||||
|
||||
We will add scoped access key credentials in the near future which can have access to specific buckets.
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ Our goal with https://github.com/supabase-community/vec2pg is to create an easy
|
||||
|
||||
Once loaded, the data can be manipulated using SQL to transform it into your preferred schema.
|
||||
|
||||
When migrating, be sure to increase your Supabase project's [disk size](https://supabase.com/dashboard/project/_/settings/database) so there is enough space for the vectors.
|
||||
When migrating, be sure to increase your Supabase project's [disk size](https://supabase.com/dashboard/project/_/database/settings) so there is enough space for the vectors.
|
||||
|
||||
## Vendors
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ Our community has asked for better support for increasingly large files, from hi
|
||||
|
||||
We have made several optimizations to our platform infrastructure and API gateway to ensure reliable handling of very large files, allowing us to increase the limit from 50 GB to 500 GB for all paid plans.
|
||||
|
||||
Once it's released next week, you can take advantage of this feature by setting the new upload size limit [here](/dashboard/project/_/settings/storage) and use the new storage-specific hostname for your uploads. You can do this by adding `storage` after your project ref in the standard Supabase url. Replace `project-ref.supabase.co` with `project-ref.storage.supabase.co`. The older URL format will continue to work.
|
||||
Once it's released next week, you can take advantage of this feature by setting the new upload size limit [here](/dashboard/project/_/storage/settings) and use the new storage-specific hostname for your uploads. You can do this by adding `storage` after your project ref in the standard Supabase url. Replace `project-ref.supabase.co` with `project-ref.storage.supabase.co`. The older URL format will continue to work.
|
||||
|
||||
For uploading large files, we recommend using one of our multipart upload options:
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ We're implementing two methods in the [`/image_search/main.py` file](/image_sear
|
||||
|
||||
## Run on hosted Supabase project
|
||||
|
||||
- Set `DB_CONNECTION` with the connection string from your hosted Supabase Dashboard: https://supabase.com/dashboard/project/_/settings/database > Connection string > URI
|
||||
- Set `DB_CONNECTION` with the connection string from your hosted Supabase Dashboard: https://supabase.com/dashboard/project/_/database/settings > Connection string > URI
|
||||
|
||||
## Attributions
|
||||
|
||||
|
||||
@@ -3,12 +3,14 @@
|
||||
In this example we're implementing image search using the [OpenAI CLIP Model](https://github.com/openai/CLIP), which was trained on a variety of (image, text)-pairs.
|
||||
|
||||
We're implementing two methods in the [`/image_search/main.py` file](/image_search/main.py):
|
||||
|
||||
1. The `seed` method generates embeddings for the images in the `images` folder and upserts them into a collection in Supabase Vector.
|
||||
2. The `search` method generates an embedding from the search query and performs a vector similarity search query.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Before running this example, ensure you have:
|
||||
|
||||
- Python 3.8 or higher installed
|
||||
- A Supabase account (sign up at https://supabase.com)
|
||||
- Poetry package manager
|
||||
@@ -27,6 +29,7 @@ Before running this example, ensure you have:
|
||||
## Run locally
|
||||
|
||||
### Generate the embeddings and seed the collection
|
||||
|
||||
- `supabase start`
|
||||
- `poetry run seed`
|
||||
- Check the embeddings stored in the local Supabase Dashboard: http://localhost:54323/project/default/editor > schema: vecs
|
||||
@@ -34,16 +37,19 @@ Before running this example, ensure you have:
|
||||
**What to expect:** The seed command will process all images in the `images` folder and generate vector embeddings for each one.
|
||||
|
||||
### Perform a search
|
||||
|
||||
- `poetry run search "bike in front of red brick wall"`
|
||||
|
||||
**What to expect:** The search will return a list of images ranked by similarity to your search query, along with similarity scores.
|
||||
|
||||
## Run on hosted Supabase project
|
||||
- Set `DB_CONNECTION` with the connection string from your hosted Supabase Dashboard: https://supabase.com/dashboard/project/_/settings/database > Connection string > URI
|
||||
|
||||
- Set `DB_CONNECTION` with the connection string from your hosted Supabase Dashboard: https://supabase.com/dashboard/project/_/database/settings > Connection string > URI
|
||||
|
||||
## Example Search Queries
|
||||
|
||||
Try these search queries to test the image search functionality:
|
||||
|
||||
- `"bike in front of red brick wall"`
|
||||
- `"person walking in park"`
|
||||
- `"blue sky with clouds"`
|
||||
@@ -52,6 +58,7 @@ Try these search queries to test the image search functionality:
|
||||
## Troubleshooting
|
||||
|
||||
**Common Issues:**
|
||||
|
||||
- **Poetry not found:** Make sure Poetry is installed with `pip install poetry`
|
||||
- **Connection errors:** Verify your Supabase connection string is correct
|
||||
- **No search results:** Ensure you've run the seed command first to populate the database
|
||||
@@ -60,6 +67,7 @@ Try these search queries to test the image search functionality:
|
||||
## How It Works
|
||||
|
||||
This example uses the CLIP (Contrastive Language-Image Pre-training) model to:
|
||||
|
||||
1. Convert images into high-dimensional vector representations (embeddings)
|
||||
2. Convert text search queries into similar vector representations
|
||||
3. Find images with embeddings most similar to the search query embedding
|
||||
@@ -68,7 +76,9 @@ This example uses the CLIP (Contrastive Language-Image Pre-training) model to:
|
||||
## Attributions
|
||||
|
||||
### Models
|
||||
|
||||
[clip-ViT-B-32](https://www.sbert.net/examples/applications/image-search/README.html) via [Hugging Face](https://huggingface.co/sentence-transformers/clip-ViT-B-32)
|
||||
|
||||
### Images
|
||||
|
||||
Images from https://unsplash.com/license via https://picsum.photos/
|
||||
|
||||
@@ -116,7 +116,7 @@
|
||||
"source": [
|
||||
"## Create an index in Supabase\n",
|
||||
"\n",
|
||||
"Let's store Paul Graham's essays in Supabase. You can find the Postgres connection string in the [Database Settings](https://supabase.com/dashboard/project/_/settings/database) of your Supabase project.\n",
|
||||
"Let's store Paul Graham's essays in Supabase. You can find the Postgres connection string in the [Database Settings](https://supabase.com/dashboard/project/_/database/settings) of your Supabase project.\n",
|
||||
"\n",
|
||||
"> **Note:** SQLAlchemy requires the connection string to start with `postgresql://` (instead of `postgres://`). Don't forget to rename this after copying the string from the dashboard.\n",
|
||||
"\n",
|
||||
|
||||
@@ -140,7 +140,7 @@
|
||||
"The [`vecs`](https://supabase.github.io/vecs/api/) library wraps a pythonic interface around PostgreSQL and pgvector.\n",
|
||||
"A collection in `vecs` maps 1:1 with a PostgreSQL table.\n",
|
||||
"\n",
|
||||
"First you will need to establish a connection to your database. You can find the Postgres connection string in the [Database Settings](https://supabase.com/dashboard/project/_/settings/database) of your Supabase project.\n",
|
||||
"First you will need to establish a connection to your database. You can find the Postgres connection string in the [Database Settings](https://supabase.com/dashboard/project/_/database/settings) of your Supabase project.\n",
|
||||
"\n",
|
||||
"> **Note:** SQLAlchemy requires the connection string to start with `postgresql://` (instead of `postgres://`). Don't forget to rename this after copying the string from the dashboard.\n",
|
||||
"\n",
|
||||
|
||||
@@ -16,7 +16,7 @@ OPENAI_API_KEY="<YOUR API KEY HERE>"
|
||||
|
||||
# postgres-on-the-edge & kysely-postgres
|
||||
# get your DB params and cert from the project dashboard
|
||||
# https://supabase.com/dashboard/project/_/settings/database
|
||||
# https://supabase.com/dashboard/project/_/database/settings
|
||||
# enable `Use connection pooling` and use `Transaction` mode
|
||||
DB_HOSTNAME=
|
||||
DB_PASSWORD=
|
||||
|
||||
Reference in New Issue
Block a user