CLI 参考

Supabase CLI

Supabase CLI 提供了在本地开发项目并部署到 Supabase 平台的工具。 该 CLI 仍在开发中,但已包含所有用于管理 Supabase 项目和 Supabase 平台的功能。


全局标志

Supabase CLI 为每个命令都支持全局标志。

Flags

    --create-ticket
    Optional
    no type

    为任何CLI错误创建支持工单

    --debug
    Optional
    no type

    将调试日志输出到标准错误

    --dns-resolver <[ native | https ]>
    Optional
    no type

    使用指定的解析器查询域名

    --experimental
    Optional
    no type

    启用实验性功能

    -h, --help
    Optional
    no type

    supabase 帮助

    --network-id <string>
    Optional
    no type

    使用指定的 docker 网络而非自动生成的网络

    -o, --output <[ env | pretty | json | toml | yaml ]>
    Optional
    no type

    状态变量的输出格式

    --workdir <字符串>
    Optional
    no type

    Supabase 项目目录路径


supabase 初始化

Usage

1
supabase bootstrap [template] [flags]

Flags

  • -p, --password <字符串>Optional

    远程 Postgres 数据库的密码。


supabase 初始化

初始化Supabase本地开发的配置。

将在当前工作目录下创建supabase/config.toml文件。该配置针对每个本地项目是特定的。

您可以通过指定SUPABASE_WORKDIR环境变量或--workdir标志来覆盖目录路径。

除了config.toml外,supabase目录还可能包含其他Supabase对象,如migrations(迁移)、functions(函数)、tests(测试)等。

Usage

1
supabase init [flags]

Flags

  • --forceOptional

    覆盖现有的supabase/config.toml文件

  • --use-orioledbOptional

    为Postgres使用OrioleDB存储引擎。

  • --with-intellij-settingsOptional

    为Deno生成IntelliJ IDEA设置。

  • --with-vscode-settingsOptional

    生成适用于 Deno 的 VS Code 设置。

1
supabase 初始化

Response

1
Finished supabase init.

supabase 登录

通过使用您的个人访问令牌登录,将Supabase CLI连接到您的Supabase账户。

您的访问令牌安全地存储在本地凭证存储中。如果本地凭证存储不可用,它将被写入到~/.supabase/access-token的纯文本文件中。

如果不希望出现此行为,例如在CI环境中,您可以通过在其他命令中指定SUPABASE_ACCESS_TOKEN环境变量来跳过登录。

Supabase CLI使用存储的令牌访问用于项目、函数、密钥等的管理API。

Usage

1
supabase login [flags]

Flags

  • --name <字符串>Optional

    将用于在您的设置中存储令牌的名称

  • --no-browserOptional

    不要自动打开浏览器

  • --token <字符串>Optional

    使用提供的令牌而非自动登录流程

1
supabase 登录

Response

1
2
3
You can generate an access token from https://supabase.com/dashboard/account/tokensEnter your access token: sbp_****************************************Finished supabase login.


supabase 启动

启动Supabase本地开发环境。

需要先在当前工作目录通过运行supabase init命令生成supabase/config.toml配置文件。

默认会启动所有服务容器。可通过-x参数排除不需要的容器。如需排除多个容器,可以传入逗号分隔的字符串(如-x gotrue,imgproxy),或多次指定-x参数。

建议至少配备7GB内存以启动所有服务。

系统会自动添加健康检查来验证已启动的容器。使用--ignore-health-check参数可忽略这些错误。

Usage

1
supabase start [flags]

Flags

  • -x, --exclude <strings>Optional

    指定不启动的容器名称。[gotrue,realtime,storage-api,imgproxy,kong,mailpit,postgrest,postgres-meta,studio,edge-runtime,logflare,vector,supavisor]

  • --ignore-health-checkOptional

    忽略不健康的服务并返回退出码0

1
supabase 启动

Response

1
2
3
4
Creating custom roles supabase/roles.sql...Applying migration 20220810154536_employee.sql...Seeding data supabase/seed.sql...Started supabase local development setup.

supabase 停止

停止Supabase本地开发堆栈。

需在当前工作目录中通过运行supabase init命令创建supabase/config.toml文件。

所有Docker资源在重启时都会保留。使用--no-backup标志可在重启间重置本地开发数据。

使用--all标志可停止机器上所有本地Supabase项目实例。与--no-backup同时使用需谨慎,这将删除所有supabase本地项目数据。

Usage

1
supabase stop [flags]

Flags

  • --allOptional

    停止本机上所有项目中的本地Supabase实例。

  • --no-backupOptional

    停止后删除所有数据卷。

  • --project-id <字符串>Optional

    要停止的本地项目ID。

1
supabase 停止

Response

1
2
Stopped supabase local development setup.Local data are backed up to docker volume.

supabase 状态

显示Supabase本地开发堆栈的状态。

需要先通过运行supabase startsupabase db start命令启动本地开发堆栈。

通过指定-o env标志,可以导出用于初始化supabase-js的连接参数。支持的参数包括JWT_SECRETANON_KEYSERVICE_ROLE_KEY

Usage

1
supabase status [flags]

Flags

  • --override-name <字符串>Optional

    覆盖特定变量名称。

1
supabase 状态

Response

1
2
3
4
5
6
7
8
9
10
supabase local development setup is running. API URL: http://127.0.0.1:54321 GraphQL URL: http://127.0.0.1:54321/graphql/v1 DB URL: postgresql://postgres:postgres@127.0.0.1:54322/postgres Studio URL: http://127.0.0.1:54323 Inbucket URL: http://127.0.0.1:54324 JWT secret: super-secret-jwt-token-with-at-least-32-characters-long anon key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24iLCJleHAiOjE5ODM4MTI5OTZ9.CRXP1A7WOeoJeXxjNni43kdQwgnWNReilDMblYTn_I0service_role key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImV4cCI6MTk4MzgxMjk5Nn0.EGIM96RAZx35lJzdJsyH-qQwv8Hdp7fsn3W0YpN81IU

supabase 测试


supabase 测试数据库

对本地数据库执行pgTAP测试。

要求通过运行supabase start启动本地开发堆栈。

在容器中运行pg_prove,并将单元测试文件从supabase/tests目录挂载到容器中。测试文件后缀可以是.sql.pg

由于每个测试都在自己的事务中运行,无论成功或失败,都会单独回滚。

Usage

1
supabase test db [path] ... [flags]

Flags

  • --db-url <字符串>Optional

    测试由连接字符串指定的数据库(必须进行百分号编码)。

  • --linkedOptional

    在链接项目上运行 pgTAP 测试。

  • --localOptional

    在本地数据库上运行 pgTAP 测试。

1
supabase 测试数据库

Response

1
2
3
4
5
/tmp/supabase/tests/nested/order_test.pg .. ok/tmp/supabase/tests/pet_test.sql .......... okAll tests successful.Files=2, Tests=2, 6 wallclock secs ( 0.03 usr 0.01 sys + 0.05 cusr 0.02 csys = 0.11 CPU)Result: PASS

supabase 测试新建

Usage

1
supabase test new <name> [flags]

Flags

  • -t, --template <[ pgtap ]>Optional

    要生成的模板框架。


supabase 生成

基于您的 Postgres 数据库模式自动生成类型定义。

该命令会连接到您的数据库(本地或远程),并生成与数据库表、视图和存储过程匹配的类型化定义。默认生成 TypeScript 定义,但也支持 Go 和 Swift。

生成的类型使您在代码中操作数据库时获得类型安全性和自动补全功能,有助于防止运行时错误并提升开发体验。

这些类型会遵循数据库模式中定义的关系、约束和自定义类型。

Subcommands


supabase 生成密钥

Usage

1
supabase gen keys [flags]

Flags

  • --override-name <字符串>Optional

    覆盖特定变量名称。

  • --project-ref <字符串>Optional

    Supabase项目的项目引用。

  • --experimentalRequired

    启用实验性功能


supabase 生成类型

Usage

1
supabase gen types [flags]

Flags

  • --db-url <字符串>Optional

    从数据库 URL 生成类型。

  • --lang <[ typescript | go | swift ]>Optional

    生成类型的输出语言。

  • --linkedOptional

    从链接项目生成类型。

  • --localOptional

    从本地开发数据库生成类型。

  • --postgrest-v9-compatOptional

    生成与PostgREST v9及以下版本兼容的类型。仅与--db-url选项一起使用。

  • --project-id <字符串>Optional

    根据项目ID生成类型。

  • -s, --schema <字符串列表>Optional

    逗号分隔的要包含的模式列表。

  • --swift-access-control <[ internal | public ]>Optional

    Swift 生成类型的访问控制。


supabase 数据库


supabase db pull

从远程数据库拉取架构变更。将在supabase/migrations目录下创建新的迁移文件。

要求通过运行supabase link将本地项目链接到远程数据库。对于自托管数据库,可以使用--db-url参数传入连接配置。

可选择在迁移历史表中插入新行以反映远程数据库当前状态。

若迁移历史表中无条目,将使用pg_dump捕获您创建的所有远程架构内容。否则该命令仅会比对远程数据库的架构差异,类似于运行db diff --linked

Usage

1
supabase db pull [migration name] [flags]

Flags

  • --db-url <字符串>Optional

    从连接字符串指定的数据库拉取数据(必须进行百分号编码)。

  • --linkedOptional

    从关联项目拉取数据。

  • --localOptional

    从本地数据库拉取数据。

  • -p, --password <字符串>Optional

    远程Postgres数据库的密码。

  • -s, --schema <字符串>Optional

    包含的模式列表,以逗号分隔。

1
supabase db pull

Response

1
2
3
4
5
6
Connecting to remote database...Schema written to supabase/migrations/20240414044403_remote_schema.sqlUpdate remote migration history table? [Y/n]Repaired migration history: [20240414044403] => appliedFinished supabase db pull.The auth and storage schemas are excluded. Run supabase db pull --schema auth,storage again to diff them.

supabase 数据库推送

将所有本地迁移推送至远程数据库。

需先通过运行supabase link命令将本地项目与远程数据库关联。对于自托管数据库,可使用--db-url参数传入连接配置。

首次运行此命令时,将在supabase_migrations.schema_migrations下创建迁移历史表。成功应用迁移后,会以时间戳作为唯一ID向迁移历史表插入新记录。后续推送将自动跳过已应用的迁移。

如需修改迁移历史表(例如删除现有条目或无需实际运行迁移就插入新条目),请使用migration repair命令。

使用--dry-run参数可在应用前预览变更列表。

Usage

1
supabase db push [flags]

Flags

  • --db-url <字符串>Optional

    推送到由连接字符串指定的数据库(必须进行百分号编码)。

  • --dry-runOptional

    打印将会应用的迁移,但实际上不执行这些迁移。

  • --include-allOptional

    包含远程历史表中未找到的所有迁移。

  • --include-rolesOptional

    包含来自supabase/roles.sql的自定义角色。

  • --include-seedOptional

    包含来自配置的种子数据。

  • --linkedOptional

    推送到链接的项目。

  • --localOptional

    推送至本地数据库。

  • -p, --password <string>Optional

    远程Postgres数据库的密码。

1
supabase 数据库推送

Response

1
Linked project is up to date.

supabase 数据库重置

将本地数据库重置为初始状态。

需要先通过运行supabase start启动本地开发环境。

会重新创建本地Postgres容器,并应用supabase/migrations目录中的所有本地迁移。如果supabase/seed.sql中定义了测试数据,将在迁移完成后进行播种。本地开发期间所做的任何其他数据或模式更改都将被丢弃。

当使用--linked--db-url标志运行db reset时,会执行SQL脚本来识别并删除远程数据库中所有用户创建的实体。由于Postgres角色是集群级实体,通过仪表板或supabase/roles.sql创建的任何自定义角色不会被远程重置删除。

Usage

1
supabase db reset [flags]

Flags

  • --db-url <字符串>Optional

    重置由连接字符串指定的数据库(必须进行百分号编码)。

  • --linkedOptional

    重置具有本地迁移的链接项目。

  • --localOptional

    使用本地迁移重置本地数据库。

  • --no-seedOptional

    重置后跳过运行种子脚本。

  • --version <字符串>Optional

    重置至指定版本。

1
supabase 数据库重置

Response

1
2
3
4
5
Resetting database...Initializing schema...Applying migration 20220810154537_create_employees_table.sql...Seeding data supabase/seed.sql...Finished supabase db reset on branch main.

supabase db dump

从远程数据库转储内容。

需要通过运行supabase link将本地项目链接到远程数据库。对于自托管数据库,可以使用--db-url标志传入连接参数。

在容器中运行pg_dump,并带有额外的标志以排除Supabase管理的模式。被忽略的模式包括auth、storage以及由扩展创建的模式。

默认转储不包含任何数据或自定义角色。要明确转储这些内容,请指定--data-only--role-only标志。

Usage

1
supabase db dump [flags]

Flags

  • --data-onlyOptional

    仅转储数据记录。

  • --db-url <字符串>Optional

    从连接字符串指定的数据库转储(必须进行百分号编码)。

  • --dry-runOptional

    打印将被执行的pg_dump脚本。

  • -x, --exclude <字符串>Optional

    从仅数据转储中排除的模式.表列表。

  • -f, --file <字符串>Optional

    保存转储内容的文件路径。

  • --keep-commentsOptional

    保留pg_dump输出中的注释行。

  • --linkedOptional

    从链接的项目中导出数据。

  • --localOptional

    从本地数据库导出数据。

  • -p, --password <字符串>Optional

    远程Postgres数据库的密码。

  • --role-onlyOptional

    仅导出集群角色。

  • -s, --schema <字符串>Optional

    要包含的模式列表,以逗号分隔。

  • --use-copyOptional

    使用复制语句代替插入语句。

1
supabase db dump -f supabase/schema.sql

Response

1
2
Dumping schemas from remote database...Dumped schema to supabase/schema.sql.

supabase 数据库差异

比较对本地或远程数据库所做的模式变更。

与本地数据库比较时,需要本地开发堆栈正在运行。要与远程或自托管数据库比较,请分别指定--linked--db-url标志。

在容器中运行djrobstep/migra来比较目标数据库与影子数据库之间的模式差异。影子数据库是通过在单独的容器中应用本地supabase/migrations目录中的迁移创建的。默认情况下,输出会写入stdout。为了方便起见,您还可以通过传入-f标志将模式差异保存为新的迁移文件。

默认情况下,会比较目标数据库中的所有模式。使用--schema public,extensions标志可以将比较限制为模式的子集。

虽然diff命令能够捕获大多数模式变更,但在某些情况下已知会失败。目前,如果您的模式包含以下内容,可能会发生这种情况:

  • 对发布的变更
  • 对存储桶的变更
  • 具有security_invoker属性的视图

Usage

1
supabase db diff [flags]

Flags

  • --db-url <字符串>Optional

    与连接字符串指定的数据库进行差异比对(必须进行百分号编码)。

  • -f, --file <字符串>Optional

    将模式差异保存到新的迁移文件中。

  • --linkedOptional

    将本地迁移文件与链接项目进行差异对比。

  • --localOptional

    将本地迁移文件与本地数据库进行差异对比。

  • -s, --schema <字符串>Optional

    逗号分隔的待包含模式列表。

  • --use-migraOptional

    使用migra生成模式差异。

  • --use-pg-schemaOptional

    使用pg-schema-diff生成模式差异。

  • --use-pgadminOptional

    使用 pgAdmin 生成模式差异。

1
supabase db diff -f my_table

Response

1
2
3
4
5
6
7
Connecting to local database...Creating shadow database...Applying migration 20230425064254_remote_commit.sql...Diffing schemas: auth,extensions,public,storageFinished supabase db diff on branch main.No schema changes found

supabase 数据库检查

对本地数据库进行模式错误检查。

当针对本地数据库进行检查时,需要本地开发环境正在运行。若要对远程或自托管数据库进行检查,请分别指定--linked--db-url标志。

在本地Postgres容器中运行plpgsql_check扩展,检查所有模式中的错误。默认检查级别为warning,可通过--level标志提升至error级别。

若仅检查特定模式,请传入--schema标志。

--fail-on标志可用于控制命令何时以非零状态码退出。可选值包括:

  • none(默认):无论检查结果如何,始终以零状态码退出。
  • warning:发现警告或错误时以非零状态码退出。
  • error:仅发现错误时以非零状态码退出。

该标志在CI/CD管道中特别有用,您可以根据特定检查条件使构建失败。

Usage

1
supabase db lint [flags]

Flags

  • --db-url <字符串>Optional

    对连接字符串指定的数据库进行代码检查(必须进行百分号编码)。

  • --fail-on <[ 无 | 警告 | 错误 ]>Optional

    触发非零退出状态的错误级别。

  • --level <[ 警告 | 错误 ]>Optional

    要发出的错误级别。

  • --linkedOptional

    检查链接项目的模式错误。

  • --localOptional

    检查本地数据库的模式错误。

  • -s, --schema <字符串>Optional

    逗号分隔的要包含的模式列表。

1
supabase 数据库检查

Response

1
2
3
Linting schema: publicNo schema errors found

supabase db start

Usage

1
supabase db start [flags]

Flags

  • --from-backup <string>Optional

    逻辑备份文件的路径。


supabase 迁移


supabase 新建迁移

在本地创建一个新的迁移文件。

如果当前workdir中不存在supabase/migrations目录,将会自动创建该目录。所有模式迁移文件都必须按照<时间戳>_<名称>.sql的命名格式存放在此目录下。

其他命令(如db diff)的输出可以通过标准输入管道传递给migration new <名称>命令。

Usage

1
supabase migration new <migration name>
1
supabase migration new schema_test

Response

1
Created new migration at supabase/migrations/20230306095710_schema_test.sql.

supabase 迁移列表

列出本地和远程数据库中的迁移历史。

需要先通过运行supabase link命令将本地项目链接到远程数据库。对于自托管数据库,可以使用--db-url标志传入连接参数。

注意URL字符串必须按照RFC 3986规范进行编码。

本地迁移存储在supabase/migrations目录中,而远程迁移记录在supabase_migrations.schema_migrations表中。仅通过时间戳比较来识别差异。

当本地与远程迁移历史存在差异时,可以使用migration repair命令进行修复。

Usage

1
supabase migration list [flags]

Flags

  • --db-url <字符串>Optional

    列出由连接字符串指定的数据库迁移(必须进行百分比编码)。

  • --linkedOptional

    列出应用于链接项目的迁移。

  • --localOptional

    列出应用于本地数据库的迁移。

  • -p, --password <字符串>Optional

    远程Postgres数据库的密码。

1
supabase 迁移列表

Response

1
2
3
4
5
LOCAL │ REMOTE │ TIME (UTC)─────────────────┼────────────────┼────────────────────── │ 20230103054303 │ 2023-01-03 05:43:03 │ 20230103093141 │ 2023-01-03 09:31:41 20230222032233 │ │ 2023-02-22 03:22:33

supabase迁移获取

Usage

1
supabase migration fetch [flags]

Flags

  • --db-url <字符串>Optional

    从连接字符串指定的数据库中获取迁移(必须进行百分号编码)。

  • --linkedOptional

    从关联项目中获取迁移历史记录。

  • --localOptional

    从本地数据库获取迁移历史记录。


supabase migration repair

修复远程迁移历史表。

要求通过运行supabase link将本地项目链接到远程数据库。

如果本地和远程迁移历史不同步,您可以通过将特定迁移标记为--status applied--status reverted来修复远程历史。标记为reverted将从迁移历史表中删除现有记录,而标记为applied将插入新记录。

例如,您的迁移历史可能如下表所示,本地或远程缺少条目。

$ supabase migration list
        本地      │     远程      │     时间 (UTC)
  ─────────────────┼────────────────┼──────────────────────
                   │ 20230103054303 │ 2023-01-03 05:43:03
   20230103054315  │                │ 2023-01-03 05:43:15

要将迁移历史重置为干净状态,首先删除本地迁移文件。

$ rm supabase/migrations/20230103054315_remote_commit.sql

$ supabase migration list
        本地      │     远程      │     时间 (UTC)
  ─────────────────┼────────────────┼──────────────────────
                   │ 20230103054303 │ 2023-01-03 05:43:03

然后将远程迁移20230103054303标记为已恢复。

$ supabase migration repair 20230103054303 --status reverted
正在连接到远程数据库...
已修复迁移历史: [20220810154537] => 已恢复
完成 supabase migration repair。

$ supabase migration list
        本地      │     远程      │     时间 (UTC)
  ─────────────────┼────────────────┼──────────────────────

现在您可以再次运行db pull将远程架构转储为本地迁移文件。

$ supabase db pull
正在连接到远程数据库...
架构已写入 supabase/migrations/20240414044403_remote_schema.sql
更新远程迁移历史表? [Y/n]
已修复迁移历史: [20240414044403] => 已应用
完成 supabase db pull。

$ supabase migration list
        本地      │     远程      │     时间 (UTC)
  ─────────────────┼────────────────┼──────────────────────
    20240414044403 │ 20240414044403 │ 2024-04-14 04:44:03

Usage

1
supabase migration repair [version] ... [flags]

Flags

  • --db-url <字符串>Optional

    修复由连接字符串指定的数据库迁移(必须进行百分号编码)。

  • --linkedOptional

    修复链接项目的迁移历史。

  • --localOptional

    修复本地数据库的迁移历史。

  • -p, --password <字符串>Optional

    远程Postgres数据库的密码。

  • --status <[ applied | reverted ]>Required

    要更新的版本状态。

1
supabase 迁移修复 20230103054303 --status 已回滚

Response

1
Repaired migration history: 20230103054303 => reverted

supabase 迁移压缩

将本地模式迁移压缩为单个迁移文件。

压缩后的迁移相当于在应用现有迁移文件后,对本地数据库进行仅模式转储。这在您希望从迁移历史中移除对同一模式的重复修改时特别有用。

然而,一个限制是数据操作语句(如插入、更新或删除)会从压缩迁移中省略。您需要在新迁移文件中手动添加这些内容。这包括定时任务、存储桶和金库中的任何加密密钥。

默认情况下,最新的 <时间戳>_<名称>.sql 文件将被更新以包含压缩后的迁移。您可以使用 --version <时间戳> 标志覆盖目标版本。

如果您的 supabase/migrations 目录为空,运行 supabase squash 将不会执行任何操作。

Usage

1
supabase migration squash [flags]

Flags

  • --db-url <字符串>Optional

    压缩由连接字符串指定的数据库迁移(必须进行百分号编码)。

  • --linkedOptional

    压缩关联项目的迁移历史记录

  • --localOptional

    压缩本地数据库的迁移历史记录

  • -p, --password <字符串>Optional

    远程Postgres数据库的密码

  • --version <string>Optional

    压缩至指定版本。


supabase 迁移升级

Usage

1
supabase migration up [flags]

Flags

  • --db-url <字符串>Optional

    将迁移应用到由连接字符串指定的数据库(必须进行百分号编码)。

  • --include-allOptional

    包含远程历史表中未找到的所有迁移。

  • --linkedOptional

    将待处理的迁移应用到链接的项目。

  • --localOptional

    将待处理的迁移应用到本地数据库。


supabase 种子数据


supabase 种子存储桶

Usage

1
supabase seed buckets

Flags

  • --linkedOptional

    为关联项目填充种子数据。

  • --localOptional

    初始化本地数据库。


supabase inspect db


supabase inspect db calls

此命令类似于 supabase inspect db outliers 命令,但按语句调用次数排序。

您可以使用此信息查看哪些查询被调用最频繁,这些查询可能是优化的潜在候选对象。


                        查询语句                      │ 总执行时间  │ 占总执行时间的比例 │ 调用次数 │  同步IO时间
  ─────────────────────────────────────────────────┼─────────────┼────────────────────┼──────────┼──────────────
    SELECT * FROM users WHERE id = $1              │ 14:50:11.828939      │ 89.8%             │ 183,389,757 │ 00:00:00.002018
    SELECT * FROM user_events                      │ 01:20:23.466633      │ 1.4%              │     78,325 │ 00:00:00
    INSERT INTO users (email, name) VALUES ($1, $2)│ 00:40:11.616882      │ 0.8%              │     54,003 │ 00:00:00.000322

Usage

1
supabase inspect db calls

Flags

  • --db-url <string>Optional

    检查由连接字符串指定的数据库(必须进行百分号编码)。

  • --linkedOptional

    检查链接的项目。

  • --localOptional

    检查本地数据库。


supabase inspect db long-running-queries

此命令显示当前运行时间超过5分钟的查询,按持续时间降序排列。长时间运行的查询可能导致多种问题,例如阻止DDL语句完成或使vacuum操作无法更新relfrozenxid

  PID  │     持续时间     │                                         查询语句
───────┼─────────────────┼───────────────────────────────────────────────────────────────────────────────────────
 19578 | 02:29:11.200129 | EXPLAIN SELECT  "students".* FROM "students"  WHERE "students"."id" = 1450645 LIMIT 1
 19465 | 02:26:05.542653 | EXPLAIN SELECT  "students".* FROM "students"  WHERE "students"."id" = 1889881 LIMIT 1
 19632 | 02:24:46.962818 | EXPLAIN SELECT  "students".* FROM "students"  WHERE "students"."id" = 1581884 LIMIT 1

Usage

1
supabase inspect db long-running-queries

Flags

  • --db-url <string>Optional

    检查由连接字符串指定的数据库(必须进行百分号编码)。

  • --linkedOptional

    检查链接的项目。

  • --localOptional

    检查本地数据库。


supabase inspect db outliers

此命令显示从pg_stat_statements获取的语句,按聚合执行时间排序。包括语句本身、该语句的总执行时间、该语句占所有语句总执行时间的比例、该语句的调用次数,以及该语句在同步I/O(文件系统读写)上花费的时间。

通常,高效查询的调用次数与总执行时间之比应适当,且尽可能减少I/O时间。对于总执行时间长但调用次数少的查询应进行调查以提升性能。同步I/O占用执行时间比例高的查询也应进行调查。


                 查询语句                  │ 执行时间        │ 执行时间占比          │ 调用次数      │ 同步I/O时间
─────────────────────────────────────────┼──────────────────┼─────────────────────────┼──────────────┼───────────────
 SELECT * FROM archivable_usage_events.. │ 154:39:26.431466 │ 72.2%                   │ 34,211,877   │ 00:00:00
 COPY public.archivable_usage_events (.. │ 50:38:33.198418  │ 23.6%                   │ 13           │ 13:34:21.00108
 COPY public.usage_events (id, reporte.. │ 02:32:16.335233  │ 1.2%                    │ 13           │ 00:34:19.784318
 INSERT INTO usage_events (id, retaine.. │ 01:42:59.436532  │ 0.8%                    │ 12,328,187   │ 00:00:00
 SELECT * FROM usage_events WHERE (alp.. │ 01:18:10.754354  │ 0.6%                    │ 102,114,301  │ 00:00:00

Usage

1
supabase inspect db outliers

Flags

  • --db-url <字符串>Optional

    检查由连接字符串指定的数据库(必须进行百分号编码)。

  • --linkedOptional

    检查链接的项目。

  • --localOptional

    检查本地数据库。


supabase inspect db blocking

此命令显示当前持有锁并造成阻塞的语句,以及被阻塞的语句。可与inspect db locks命令配合使用,以确定需要终止哪些语句来解决锁争用问题。

    被阻塞PID │ 阻塞语句                     │ 阻塞时长         │ 阻塞PID      │ 被阻塞语句                                                                              │ 被阻塞时长
  ──────────────┼──────────────────────────────┼───────────────────┼──────────────┼────────────────────────────────────────────────────────────────────────────────────────┼───────────────────
    253         │ select count(*) from mytable │ 00:00:03.838314   │        13495 │ UPDATE "mytable" SET "updated_at" = '2023─08─03 14:07:04.746688' WHERE "id" = 83719341 │ 00:00:03.821826

Usage

1
supabase inspect db blocking

Flags

  • --db-url <字符串>Optional

    检查由连接字符串指定的数据库(必须进行百分号编码)。

  • --linkedOptional

    检查链接的项目。

  • --localOptional

    检查本地数据库。


supabase inspect db locks

此命令显示已对关系获取独占锁的查询。独占锁通常会阻止对该关系的其他操作,并可能导致“挂起”查询等待锁被授予。

如果发现某个查询长时间挂起或导致阻塞问题,可以考虑通过连接到数据库并运行SELECT pg_cancel_backend(PID);来取消该查询。如果查询仍未停止,可以通过运行SELECT pg_terminate_backend(PID);强制终止。

     PID   │ RELNAME │ TRANSACTION ID │ GRANTED │                  QUERY                  │   AGE
  ─────────┼─────────┼────────────────┼─────────┼─────────────────────────────────────────┼───────────
    328112 │ null    │              0 │ t       │ SELECT * FROM logs;                     │ 00:04:20

Usage

1
supabase inspect db locks

Flags

  • --db-url <字符串>Optional

    检查由连接字符串指定的数据库(必须进行百分号编码)。

  • --linkedOptional

    检查链接的项目。

  • --localOptional

    检查本地数据库。


supabase inspect db total-index-size

此命令显示数据库中所有索引的总大小。计算方法是将页数(由relpages报告)乘以页面大小(8192字节)。

    大小
  ─────────
    12 MB

Usage

1
supabase inspect db total-index-size

Flags

  • --db-url <字符串>Optional

    检查由连接字符串指定的数据库(必须进行百分号编码)。

  • --linkedOptional

    检查链接的项目。

  • --localOptional

    检查本地数据库。


supabase 检查数据库 索引大小

此命令显示数据库中每个索引的大小。计算方式是将页数(由relpages报告)乘以页面大小(8192字节)。

              名称              │    大小
  ──────────────────────────────┼─────────────
    user_events_index           │ 2082 MB
    job_run_details_pkey        │ 3856 kB
    schema_migrations_pkey      │ 16 kB
    refresh_tokens_token_unique │ 8192字节
    users_instance_id_idx       │ 0字节
    buckets_pkey                │ 0字节

Usage

1
supabase inspect db index-sizes

Flags

  • --db-url <字符串>Optional

    检查由连接字符串指定的数据库(必须进行百分号编码)。

  • --linkedOptional

    检查链接的项目。

  • --localOptional

    检查本地数据库。


supabase inspect db index-usage

该命令提供索引效率信息,以索引扫描占总扫描次数的百分比表示。低百分比可能表明索引不足或索引了错误数据。

       表名          │       索引使用百分比       │   表行数
  ────────────────────┼────────────────────────────┼───────────────
    user_events       │                         99 │     4225318 
    user_feed         │                         99 │     3581573
    unindexed_table   │                          0 │      322911
    job               │                        100 │       33242
    schema_migrations │                         97 │           0
    migrations        │ 数据不足                   │           0

Usage

1
supabase inspect db index-usage

Flags

  • --db-url <字符串>Optional

    检查由连接字符串指定的数据库(必须进行百分号编码)。

  • --linkedOptional

    检查链接的项目。

  • --localOptional

    检查本地数据库。


supabase inspect db unused-indexes

此命令显示扫描次数少于50次且大小超过5页的索引,并按相对于索引扫描次数的大小排序。该命令通常用于发现未使用的索引。索引会影响写入性能,如果它们占用内存空间,也会影响读取性能,因此删除不需要或未使用的索引是一个好主意。

        表名         │                   索引名                   │ 索引大小   │ 索引扫描次数
─────────────────────┼────────────────────────────────────────────┼────────────┼──────────────
 public.users        │ user_id_created_at_idx                     │ 97 MB      │           0

Usage

1
supabase inspect db unused-indexes

Flags

  • --db-url <字符串>Optional

    检查由连接字符串指定的数据库(必须进行百分号编码)。

  • --linkedOptional

    检查链接的项目。

  • --localOptional

    检查本地数据库。


supabase inspect db total-table-sizes

此命令显示数据库中每个表的总大小。它是每个表的pg_table_size()pg_indexes_size()返回值之和。不包括pg_cataloginformation_schema中的系统表。

                名称              │    大小
───────────────────────────────────┼─────────────
  job_run_details                  │ 395 MB
  slack_msgs                       │ 648 kB
  emails                           │ 640 kB

Usage

1
supabase inspect db total-table-sizes

Flags

  • --db-url <字符串>Optional

    检查由连接字符串指定的数据库(必须进行百分号编码)。

  • --linkedOptional

    检查链接的项目。

  • --localOptional

    检查本地数据库。


supabase inspect db table-sizes

此命令显示数据库中每个表的大小。它是通过使用系统管理函数pg_table_size()计算的,该函数包括主数据分支、空闲空间映射、可见性映射和TOAST数据的大小。不包括表的索引大小。

                  名称               │    大小
  ───────────────────────────────────┼─────────────
    job_run_details                  │ 385 MB
    emails                           │ 584 kB
    job                              │ 40 kB
    sessions                         │ 0 字节
    prod_resource_notifications_meta │ 0 字节

Usage

1
supabase inspect db table-sizes

Flags

  • --db-url <字符串>Optional

    检查由连接字符串指定的数据库(必须进行百分号编码)。

  • --linkedOptional

    检查链接的项目。

  • --localOptional

    检查本地数据库。


supabase inspect db table-index-sizes

此命令显示每个表索引的总大小。它是通过使用系统管理函数pg_indexes_size()计算的。

                 表名               │ 索引大小
  ───────────────────────────────────┼─────────────
    job_run_details                  │ 10104 kB
    users                            │ 128 kB
    job                              │ 32 kB
    instances                        │ 8192 字节
    http_request_queue               │ 0 字节

Usage

1
supabase inspect db table-index-sizes

Flags

  • --db-url <字符串>Optional

    检查由连接字符串指定的数据库(必须进行百分号编码)。

  • --linkedOptional

    检查链接的项目。

  • --localOptional

    检查本地数据库。


supabase inspect db cache-hit

该命令提供关于缓冲缓存效率的信息,以及您的查询必须访问磁盘而非从内存读取的频率。同时显示索引读取(index hit rate)和表读取(table hit rate)的信息。通常,缓存命中率低的数据库性能较差,因为从磁盘读取数据比从内存检索要慢。如果您的表命中率较低,这可能表明您的RAM不足,升级到具有更多内存的更大计算插件可能会有所帮助。如果您的索引命中率较低,这可能表明有添加更合适索引的空间。

命中率计算为从Postgres缓冲缓存获取的表或索引块数与从磁盘读取的缓存块和未缓存块之和的比率。

在较小的计算计划(免费、小型、中型)上,低于99%的比率可能表明存在问题。在较大的计划上,命中率可能较低,但性能将保持稳定,因为数据可能使用操作系统缓存而非Postgres缓冲缓存。

         名称      │  比率
  ─────────────────┼───────────
    索引命中率 │ 0.996621
    表命中率 │ 0.999341

Usage

1
supabase inspect db cache-hit

Flags

  • --db-url <string>Optional

    检查由连接字符串指定的数据库(必须进行百分号编码)。

  • --linkedOptional

    检查链接的项目。

  • --localOptional

    检查本地数据库。


supabase inspect db table-record-counts

此命令显示每个表的预估行数,按预估数量降序排列。预估数量来源于n_live_tup,该值由vacuum操作更新。由于n_live_tup的填充方式,稀疏页与密集页可能导致预估数量与实际行数存在显著差异。

       表名      │ 预估行数
  ─────────────┼──────────────────
    logs       │          322943
    emails     │            1103
    job        │               1
    migrations │               0

Usage

1
supabase inspect db table-record-counts

Flags

  • --db-url <字符串>Optional

    检查连接字符串指定的数据库(必须进行百分号编码)。

  • --linkedOptional

    检查链接的项目。

  • --localOptional

    检查本地数据库。


supabase inspect db seq-scans

此命令显示所有表记录的顺序扫描次数,按顺序扫描次数降序排列。顺序扫描次数非常高的表可能索引不足,值得调查从这些表读取的查询。

                  名称               │ 次数
  ───────────────────────────────────┼─────────
    电子邮件                          │ 182435
    用户                             │  25063
    作业运行详情                      │     60
    架构迁移                         │      0
    迁移记录                         │      0

Usage

1
supabase inspect db seq-scans

Flags

  • --db-url <字符串>Optional

    检查由连接字符串指定的数据库(必须进行百分号编码)。

  • --linkedOptional

    检查链接的项目。

  • --localOptional

    检查本地数据库。


supabase inspect db replication-slots

此命令显示数据库中设置的逻辑复制槽信息。它会显示槽是否活跃、WAL发送进程状态('startup'、'catchup'、'streaming'、'backup'、'stopping')、复制客户端地址以及以GB为单位的复制延迟量。

该命令可用于检查复制延迟量是否尽可能低,复制延迟可能由网络延迟问题、磁盘I/O缓慢、长时间运行的事务或订阅者无法足够快地消费WAL引起。

                       名称                    │ 活跃 │ 状态   │ 复制客户端地址 │ 复制延迟 GB
  ─────────────────────────────────────────────┼──────┼─────────┼────────────────┼───────────────
    supabase_realtime_replication_slot         │ 是   │ 不适用 │ 不适用         │             0
    datastream                                 │ 是   │ 追赶中 │ 24.201.24.106  │            45

Usage

1
supabase inspect db replication-slots

Flags

  • --db-url <字符串>Optional

    检查由连接字符串指定的数据库(必须进行百分号编码)。

  • --linkedOptional

    检查链接的项目。

  • --localOptional

    检查本地数据库。


supabase inspect db role-connections

此命令显示每个数据库角色的活跃连接数,以便查看哪个特定角色可能消耗了超出预期的连接数。

这是Supabase特有的命令。您也可以在仪表板上查看此细分: https://app.supabase.com/project/_/database/roles

最大活跃连接数取决于您的实例大小。您可以手动覆盖允许的连接数,但不建议这样做。



            角色名称         │ 活跃连接数
  ────────────────────────────┼───────────────────
    authenticator             │                5
    postgres                  │                5
    supabase_admin            │                1
    pgbouncer                 │                1
    anon                      │                0
    authenticated             │                0
    service_role              │                0
    dashboard_user            │                0
    supabase_auth_admin       │                0
    supabase_storage_admin    │                0
    supabase_functions_admin  │                0
    pgsodium_keyholder        │                0
    pg_read_all_data          │                0
    pg_write_all_data         │                0
    pg_monitor                │                0

活跃连接数 12/90

Usage

1
supabase inspect db role-connections

Flags

  • --db-url <字符串>Optional

    检查由连接字符串指定的数据库(必须进行百分号编码)。

  • --linkedOptional

    检查链接的项目。

  • --localOptional

    检查本地数据库。


supabase inspect db bloat

此命令显示表的"膨胀"估算值 - 由于Postgres的MVCC机制,当数据被更新或删除时,会创建新行并将旧行标记为不可见的"死元组"。通常自动清理进程会异步清理这些死元组。但有时自动清理速度不够快,无法减少或防止表膨胀。高膨胀率会降低查询速度、导致过度IOPS并浪费数据库空间。

对于膨胀率高的表应进行调查,查看是否存在清理速度不足或其他问题。

    类型  │ 模式名称   │        对象名称          │ 膨胀率 │ 浪费空间
  ────────┼─────────────┼────────────────────────────┼───────┼─────────────
    表    │ public      │ very_bloated_table         │  41.0 │ 700 MB
    表    │ public      │ my_table                   │   4.0 │ 76 MB
    表    │ public      │ happy_table                │   1.0 │ 1472 kB
    索引  │ public      │ happy_table::my_nice_index │   0.7 │ 880 kB

Usage

1
supabase inspect db bloat

Flags

  • --db-url <字符串>Optional

    检查由连接字符串指定的数据库(必须进行百分号编码)。

  • --linkedOptional

    检查链接的项目。

  • --localOptional

    检查本地数据库。


supabase inspect db vacuum-stats

此命令显示每个表的 vacuum 活动统计信息。由于Postgres的MVCC机制,当数据被更新或删除时,会创建新行并将旧行标记为不可见的"死元组"。通常autovaccum进程会异步清理这些死元组。

该命令列出最后一次手动vacuum和自动vacuum的时间、表的行数、死行数以及是否预期会运行自动vacuum。如果死行数远高于行数,或者预期会运行自动vacuum但长时间未执行,这可能表明自动vacuum无法跟上节奏,需要调整vacuum设置或增加计算资源/磁盘IOPS以使自动vacuum能够完成。

        模式          │              表名               │ 最后手动VACUUM │ 最后自动VACUUM │        行数        │    死行数     │ 预期自动VACUUM?
──────────────────────┼──────────────────────────────────┼─────────────┼──────────────────┼──────────────────────┼────────────────┼─────────────────────
 auth                 │ users                            │             │ 2023-06-26 12:34 │               18,030 │              0 │ 否
 public               │ profiles                         │             │ 2023-06-26 23:45 │               13,420 │             28 │ 否
 public               │ logs                             │             │ 2023-06-26 01:23 │            1,313,033 │      3,318,228 │ 是
 storage              │ objects                          │             │                  │             无统计信息 │              0 │ 否
 storage              │ buckets                          │             │                  │             无统计信息 │              0 │ 否
 supabase_migrations  │ schema_migrations                │             │                  │             无统计信息 │              0 │ 否

Usage

1
supabase inspect db vacuum-stats

Flags

  • --db-url <字符串>Optional

    检查指定连接字符串对应的数据库(必须进行百分号编码)。

  • --linkedOptional

    检查链接的项目。

  • --localOptional

    检查本地数据库。


supabase 检查报告

Usage

1
supabase inspect report [flags]

Flags

  • --output-dir <字符串>Optional

    保存CSV文件的路径

  • --db-url <字符串>Optional

    检查由连接字符串指定的数据库(必须进行百分号编码)。

  • --linkedOptional

    检查链接的项目。

  • --localOptional

    检查本地数据库。


supabase 组织


supabase 组织创建

为已登录用户创建一个组织。

Usage

1
supabase orgs create

supabase 组织列表

列出登录用户所属的所有组织。

Usage

1
supabase orgs list

supabase 项目

提供用于创建和管理Supabase项目的工具。

此命令组允许您列出组织中的所有项目、创建新项目、删除现有项目以及检索API密钥。这些操作帮助您以编程方式管理Supabase基础设施,而无需使用仪表板。

通过CLI进行项目管理对于自动化脚本特别有用,当您需要以可重复的方式配置环境时。

Subcommands


supabase 项目创建

Usage

1
supabase projects create [project name] [flags]

Flags

  • --数据库密码 <字符串>Optional

    项目的数据库密码。

  • --组织ID <字符串>Optional

    创建项目所属的组织ID。

  • --region <字符串>Optional

    选择离您最近的区域以获得最佳性能。

  • --size <字符串>Optional

    为您的项目选择所需的实例大小。


supabase 项目列表

列出登录用户可以访问的所有Supabase项目。

Usage

1
supabase projects list

supabase项目API密钥

Usage

1
supabase projects api-keys [flags]

Flags

  • --项目引用 <字符串>Optional

    Supabase 项目的项目引用。


supabase 项目删除

Usage

1
supabase projects delete <ref>

supabase config


supabase config push

使用本地的 supabase/config.toml 文件更新已链接的 Supabase 项目配置。

该命令允许您通过本地定义设置,然后将其推送到远程项目,实现项目配置的代码化管理。

Usage

1
supabase config push

Flags

  • --project-ref <字符串>Optional

    Supabase项目的项目引用。


Supabase 分支


supabase 分支创建

为关联项目创建预览分支。

Usage

1
supabase branches create [name] [flags]

Flags

  • --persistentOptional

    是否创建持久性分支。

  • --region <字符串>Optional

    选择部署分支数据库的区域。

  • --大小 <字符串>Optional

    为分支数据库选择所需的实例大小。

  • --experimentalRequired

    启用实验性功能

  • --project-ref <字符串>Optional

    Supabase项目的项目引用。


supabase 分支列表

列出关联项目的所有预览分支。

Usage

1
supabase branches list

Flags

  • --experimentalRequired

    启用实验性功能

  • --project-ref <字符串>Optional

    Supabase 项目的项目引用。


supabase 分支获取

检索指定预览分支的详细信息。

Usage

1
supabase branches get [branch-id]

Flags

  • --实验性Required

    启用实验性功能

  • --project-ref <字符串>Optional

    Supabase 项目的项目引用。


Supabase 分支更新

通过名称或ID更新预览分支。

Usage

1
supabase branches update [branch-id] [flags]

Flags

  • --git-branch <字符串>Optional

    更改关联的 git 分支。

  • --name <字符串>Optional

    重命名预览分支。

  • --persistentOptional

    在临时分支和持久分支之间切换。

  • --status <字符串>Optional

    覆盖当前分支状态。

  • --experimentalRequired

    启用实验性功能

  • --project-ref <字符串>Optional

    Supabase项目的项目引用


supabase分支删除

通过名称或ID删除预览分支

Usage

1
supabase branches delete [branch-id]

Flags

  • --experimentalRequired

    启用实验性功能

  • --project-ref <字符串>Optional

    Supabase项目的项目引用。


supabase branches disable

为关联项目禁用预览分支功能。

Usage

1
supabase branches disable

Flags

  • --experimentalRequired

    启用实验性功能

  • --project-ref <字符串>Optional

    Supabase项目的项目引用


supabase 函数

管理Supabase边缘函数。

Supabase边缘函数是靠近用户运行的无服务器函数。

边缘函数允许您执行自定义服务器端代码,而无需部署或扩展传统服务器。它们非常适合处理webhook、自定义API端点、数据验证和提供个性化内容。

边缘函数使用TypeScript编写,并在Deno兼容的边缘运行时上运行,这是一个安全的运行时,无需包管理,冷启动快速,并具有内置安全性。

Subcommands


supabase 函数新建

supabase/functions目录中创建一个带有样板代码的新边缘函数。

此命令会生成一个包含必要Deno导入和基本函数结构的TypeScript入门文件。函数将以您指定的名称创建为一个新目录,其中包含带有函数代码的index.ts文件。

创建函数后,您可以在本地编辑它,然后使用supabase functions serve进行测试,最后通过supabase functions deploy部署。

Usage

1
supabase functions new <Function name>

supabase functions list

列出关联Supabase项目中的所有函数。

Usage

1
supabase functions list [flags]

Flags

  • --project-ref <字符串>Optional

    Supabase 项目的项目引用。


supabase functions download

从关联的 Supabase 项目下载函数的源代码。

Usage

1
supabase functions download <Function name> [flags]

Flags

  • --legacy-bundleOptional

    使用旧版打包机制。

  • --project-ref <string>Optional

    Supabase项目的项目引用


supabase 函数服务

在本地运行所有函数。

supabase functions serve 命令包含额外标志,可通过v8检查器协议帮助开发者调试边缘函数,支持通过Chrome DevTools、VS Code和IntelliJ IDEA等工具进行调试。具体设置方法请参阅文档指南

  1. --inspect

    • --inspect-mode brk的别名
  2. --inspect-mode [ run | brk | wait ]

    • 激活检查器功能
    • run模式仅允许建立连接而不附加其他行为。不适合短脚本,但对长期运行的脚本偶尔设置断点时有用
    • brk模式与run模式相同,但会在首行设置断点,在代码执行前暂停脚本
    • wait模式类似brk模式,但不设置首行断点,而是等待检查器会话连接后才继续执行
  3. --inspect-main

    • 需配合上述任一标志使用
    • 默认禁止为主工作线程创建检查器会话,此标志可解除限制
    • 其他行为遵循上述inspect-mode标志

此外,可通过supabase/config.toml文件中edge_runtime节自定义以下属性:

  1. inspector_port
    • 监听检查器会话的端口,默认8083
  2. policy
    • 控制边缘运行时如何转发HTTP请求到工作线程
    • per_worker允许多个请求转发至已创建的工作线程
    • oneshot强制工作线程处理单个请求后立即退出(调试专用,即时反映代码修改时特别有用)

Usage

1
supabase functions serve [flags]

Flags

  • --env-file <字符串>Optional

    指向环境变量文件的路径,该文件内容将注入函数运行环境

  • --import-map <字符串>Optional

    导入映射文件的路径

  • --inspectOptional

    --inspect-mode brk 的别名。

  • --inspect-mainOptional

    允许检查主工作线程。

  • --inspect-mode <[ run | brk | wait ]>Optional

    激活检查器功能以进行调试。

  • --不验证-jwtOptional

    禁用该函数的JWT验证。


supabase 函数部署

将函数部署到关联的Supabase项目

Usage

1
supabase functions deploy [Function name] [flags]

Flags

  • --import-map <string>Optional

    导入映射文件的路径

  • -j, --jobs <数量>Optional

    最大并行任务数。

  • --no-verify-jwtOptional

    禁用该函数的JWT验证。

  • --project-ref <字符串>Optional

    Supabase 项目的项目引用。

  • --use-apiOptional

    使用管理 API 打包函数。

  • --use-dockerOptional

    使用 Docker 打包函数。


supabase 函数删除

从关联的 Supabase 项目中删除一个函数。此操作不会在本地移除该函数。

Usage

1
supabase functions delete <Function name> [flags]

Flags

  • --project-ref <字符串>Optional

    Supabase 项目的项目引用。


supabase 密钥

提供工具用于管理您的Supabase项目的环境变量和机密信息。

此命令组允许您设置、删除和列出安全存储的机密信息,这些信息将作为环境变量提供给边缘函数使用。

通过CLI进行机密管理适用于:

  • 设置特定环境配置
  • 安全管理敏感凭证

为方便起见,可以单独设置机密或从.env文件加载。

Subcommands


supabase 密钥设置

为关联的Supabase项目设置一个或多个密钥。

Usage

1
supabase secrets set <NAME=VALUE> ... [flags]

Flags

  • --env-file <string>Optional

    从.env文件中读取密钥。

  • --project-ref <string>Optional

    Supabase项目的项目引用标识。


supabase 密钥列表

列出链接项目中的所有密钥。

Usage

1
supabase secrets list

Flags

  • --project-ref <字符串>Optional

    Supabase项目的项目引用。


supabase 密钥取消设置

从关联的Supabase项目中删除一个或多个机密信息。

Usage

1
supabase secrets unset [NAME] ...

Flags

  • --project-ref <字符串>Optional

    Supabase项目的项目引用标识。


supabase 存储


supabase storage ls

Usage

1
supabase storage ls [path] [flags]

Flags

  • -r, --recursiveOptional

    递归列出目录内容。

  • --experimentalRequired

    启用实验性功能

  • --linkedOptional

    连接到关联项目的存储API。

  • --localOptional

    连接到本地数据库的存储API。


supabase storage cp

Usage

1
supabase storage cp <src> <dst> [flags]

Flags

  • --cache-control <字符串>Optional

    为HTTP上传自定义Cache-Control头。

  • --content-type <字符串>Optional

    HTTP上传的自定义Content-Type头。

  • -j, --jobs <无符号整数>Optional

    最大并行任务数。

  • -r, --recursiveOptional

    递归复制目录。

  • --experimentalRequired

    启用实验性功能

  • --linkedOptional

    连接到关联项目的存储API。

  • --localOptional

    连接到本地数据库的存储API。


supabase storage mv

Usage

1
supabase storage mv <src> <dst> [flags]

Flags

  • -r, --recursiveOptional

    递归移动目录

  • --experimentalRequired

    启用实验性功能

  • --linkedOptional

    连接到关联项目的存储API。

  • --localOptional

    连接到本地数据库的存储API。


supabase storage rm

Usage

1
supabase storage rm <file> ... [flags]

Flags

  • -r, --recursiveOptional

    递归删除目录

  • --experimentalRequired

    启用实验性功能

  • --linkedOptional

    连接到关联项目的存储API。

  • --localOptional

    连接到本地数据库的存储API。


supabase 加密


supabase encryption get-root-key

Usage

1
supabase encryption get-root-key

Flags

  • --project-ref <字符串>Optional

    Supabase 项目的项目引用。


supabase 加密更新根密钥

Usage

1
supabase encryption update-root-key

Flags

  • --project-ref <字符串>Optional

    Supabase 项目的项目引用。


supabase 单点登录


supabase 单点登录添加

为您的Supabase项目添加并配置一个新的SSO身份提供商连接。

Usage

1
supabase sso add [flags]

Flags

  • --attribute-mapping-file <string>Optional

    包含SAML属性与自定义JWT声明之间JSON映射的文件。

  • --domains <strings>Optional

    与新增身份提供商关联的电子邮件域名的逗号分隔列表。

  • --metadata-file <string>Optional

    包含描述身份提供者的SAML 2.0元数据XML文档的文件。

  • --metadata-url <字符串>Optional

    指向描述身份提供者的SAML 2.0元数据XML文档的URL。

  • --skip-url-validationOptional

    是否不应执行SAML 2.0元数据URL的本地验证。

  • -t, --type <[ saml ]>Required

    身份提供者类型(根据支持的协议)。

  • --project-ref <字符串>Optional

    Supabase 项目的项目引用。

1
2
3
4
5
supabase sso add \ --project-ref abcdefgijklmnopqrst \ --type saml \ --metadata-url 'https://...' \ --domains company.com

Response

1
2
3
Information about the added identity provider. You can usecompany.com as the domain name on the frontend side to initiate a SSOrequest to the identity provider.

supabase sso 列表

列出与您的 Supabase 项目连接的所有 SSO 身份提供商。

Usage

1
supabase sso list

Flags

  • --project-ref <字符串>Optional

    Supabase 项目的项目引用。


supabase sso 显示

提供有关与身份提供者建立的连接的信息。您可以使用--metadata获取存储在项目配置中的原始SAML 2.0元数据XML文档。

Usage

1
supabase sso show <provider-id> [flags]

Flags

  • --metadataOptional

    仅显示SAML 2.0 XML元数据

  • --project-ref <字符串>Optional

    Supabase 项目的项目引用。

1
2
supabase sso show 6df4d73f-bf21-405f-a084-badf19fea5 \ --project-ref abcdefghijklmnopqrst

Response

1
Information about the identity provider in pretty output.

Supabase 单点登录信息

返回项目注册到兼容SAML 2.0身份提供商所需的所有重要SSO信息。

Usage

1
supabase sso info

Flags

  • --project-ref <字符串>Optional

    Supabase项目的项目引用。

1
supabase sso信息 --project-ref abcdefghijklmnopqrst

Response

1
Information about your project's SAML 2.0 configuration.

supabase sso 更新

更新已添加的SSO身份提供商的配置设置。

Usage

1
supabase sso update <provider-id> [flags]

Flags

  • --add-domains <字符串>Optional

    将这些以逗号分隔的电子邮件域名添加到身份提供者。

  • --attribute-mapping-file <字符串>Optional

    包含SAML属性与自定义JWT声明之间JSON映射的文件。

  • --domains <字符串>Optional

    用此逗号分隔的电子邮件域名列表替换域名。

  • --metadata-file <字符串>Optional

    包含描述身份提供者的SAML 2.0元数据XML文档的文件。

  • --metadata-url <字符串>Optional

    指向描述身份提供者的SAML 2.0元数据XML文档的URL。

  • --remove-domains <字符串列表>Optional

    从身份提供者中移除这个以逗号分隔的电子邮件域名列表。

  • --skip-url-validationOptional

    是否不应执行SAML 2.0元数据URL的本地验证。

  • --project-ref <字符串>Optional

    Supabase项目的项目引用。

1
2
3
supabase sso update 6df4d73f-bf21-405f-a084-b11adf19fea5 \ --project-ref abcdefghijklmnopqrst \ --domains new-company.com,new-company.net

Response

1
Information about the updated provider.

supabase sso 移除

移除已添加的 SSO 身份提供程序连接。移除提供程序将阻止现有用户登录。请谨慎使用此命令。

Usage

1
supabase sso remove <provider-id>

Flags

  • --project-ref <字符串>Optional

    Supabase 项目的项目引用。

1
2
supabase sso 移除 6df4d73f-bf21-405f-a084-b11adf19fea5 \ --project-ref abcdefghijklmnopqrst

Response

1
2
Information about the removed identity provider. It's a good idea tosave this in case you need it later on.

Supabase 域名

管理Supabase项目的自定义域名。

自定义域名与个性化子域名的使用是互斥的。

Subcommands


supabase 域名激活

为项目启用自定义域名配置。

此操作将重新配置您的 Supabase 项目,使其响应自定义域名上的请求。

激活自定义域名后,您项目的第三方身份验证提供商将不再在 Supabase 提供的子域名上运行。请参阅文档中的准备激活您的域名部分,了解需要遵循的步骤详情。

Usage

1
supabase domains activate

Flags

  • --include-raw-outputOptional

    包含原始输出(用于调试)。

  • --project-ref <字符串>Optional

    Supabase项目的项目引用。


supabase 域名创建

为您的Supabase项目创建自定义主机名。

期望您的自定义主机名具有指向Supabase项目子域的CNAME记录。

Usage

1
supabase domains create [flags]

Flags

  • --custom-hostname <字符串>Optional

    为您的Supabase项目使用的自定义主机名。

  • --include-raw-outputOptional

    包含原始输出(对调试有用)。

  • --project-ref <字符串>Optional

    Supabase 项目的项目引用编号。


Supabase 域名获取

获取项目中存储的自定义主机名配置,该配置保存在Supabase平台中。

Usage

1
supabase domains get

Flags

  • --include-raw-outputOptional

    包含原始输出(用于调试)。

  • --project-ref <string>Optional

    Supabase项目的项目引用。


Supabase 域名重新验证

Usage

1
supabase domains reverify

Flags

  • --include-raw-outputOptional

    包含原始输出(用于调试)。

  • --project-ref <string>Optional

    Supabase项目的项目引用。


supabase 域名删除

Usage

1
supabase domains delete

Flags

  • --include-raw-outputOptional

    包含原始输出(用于调试)。

  • --project-ref <string>Optional

    Supabase项目的项目引用。


supabase 自定义子域名

管理 Supabase 项目的自定义子域名。

自定义子域名与自定义域名的使用互斥。

Subcommands


supabase 自定义子域名激活

为您的Supabase项目激活自定义子域名。

这将重新配置您的Supabase项目,使其响应自定义子域名上的请求。 自定义子域名激活后,您项目的认证服务将不再在{project-ref}.{supabase-domain}主机名上运行。

Usage

1
supabase vanity-subdomains activate [flags]

Flags

  • --desired-subdomain <string>Optional

    为您的Supabase项目使用的自定义子域名。

  • --experimentalRequired

    启用实验性功能

  • --project-ref <string>Optional

    Supabase 项目的项目引用。


supabase 自定义子域名获取

Usage

1
supabase vanity-subdomains get

Flags

  • --experimentalRequired

    启用实验性功能

  • --project-ref <字符串>Optional

    Supabase 项目的项目引用。


supabase 自定义子域名检查可用性

Usage

1
supabase vanity-subdomains check-availability [flags]

Flags

  • --desired-subdomain <字符串>Optional

    希望为您的 Supabase 项目使用的自定义子域名。

  • --experimentalRequired

    启用实验性功能

  • --project-ref <字符串>Optional

    Supabase项目的项目引用。


supabase vanity-subdomains delete

删除项目的自定义子域名,并恢复使用项目引用进行路由。

Usage

1
supabase vanity-subdomains delete

Flags

  • --experimentalRequired

    启用实验性功能

  • --project-ref <string>Optional

    Supabase 项目的项目引用。


supabase 网络封禁

网络封禁是指那些因流量模式看起来具有滥用性(例如多次认证失败尝试)而被临时封锁的IP地址。

子命令可帮助您查看当前封禁情况,并在需要时解除对IP的封锁。

Subcommands


supabase network-bans get

Usage

1
supabase network-bans get

Flags

  • --experimentalRequired

    启用实验性功能

  • --project-ref <字符串>Optional

    Supabase 项目的项目引用。


supabase 网络封禁 移除

Usage

1
supabase network-bans remove [flags]

Flags

  • --db-unban-ip <字符串>Optional

    允许数据库连接的IP地址。

  • --experimentalRequired

    启用实验性功能

  • --project-ref <字符串>Optional

    Supabase 项目的项目引用。


supabase 网络限制


supabase 网络限制获取

Usage

1
supabase network-restrictions get

Flags

  • --实验性Required

    启用实验性功能

  • --project-ref <字符串>Optional

    Supabase项目的项目引用。


supabase 网络限制更新

Usage

1
supabase network-restrictions update [flags]

Flags

  • --绕过CIDR检查Optional

    绕过部分CIDR验证检查。

  • --db-allow-cidr <字符串>Optional

    允许数据库连接的CIDR范围。

  • --experimentalRequired

    启用实验性功能

  • --project-ref <字符串>Optional

    Supabase 项目的项目引用标识。


supabase SSL 强制执行


supabase ssl-enforcement get

Usage

1
supabase ssl-enforcement get

Flags

  • --experimentalRequired

    启用实验性功能

  • --project-ref <字符串>Optional

    Supabase项目的项目引用


supabase SSL 强制执行更新

Usage

1
supabase ssl-enforcement update [flags]

Flags

  • --禁用数据库SSL强制执行Optional

    是否应为所有外部连接禁用数据库的SSL强制执行。

  • --启用数据库SSL强制执行Optional

    数据库是否应为所有外部连接启用SSL强制。

  • --experimentalRequired

    启用实验性功能

  • --project-ref <字符串>Optional

    Supabase项目的项目引用。


supabase postgres 配置


supabase postgres-config get

Usage

1
supabase postgres-config get

Flags

  • --experimentalRequired

    启用实验性功能

  • --project-ref <字符串>Optional

    Supabase项目的项目引用。


supabase postgres 配置更新

覆盖默认的 Postgres 配置可能导致数据库行为不稳定。 自定义配置还会覆盖基于所使用的计算附加组件生成的优化配置。

Usage

1
supabase postgres-config update [flags]

Flags

  • --config <字符串>Optional

    配置覆盖项以'key=value'键值对形式指定

  • --no-restartOptional

    更新配置后不重启数据库

  • --replace-existing-overridesOptional

    若为true,则用提供的覆盖项替换所有现有项。若为false(默认值),则将现有覆盖项与提供的覆盖项合并。

  • --experimentalRequired

    启用实验性功能

  • --project-ref <字符串>Optional

    Supabase项目的项目引用标识


supabase postgres-config delete

删除特定的配置覆盖项,将其恢复为默认值。

Usage

1
supabase postgres-config delete [flags]

Flags

  • --config <字符串>Optional

    要删除的配置键(逗号分隔)

  • --no-restartOptional

    删除配置后不重启数据库。

  • --experimentalRequired

    启用实验性功能

  • --project-ref <字符串>Optional

    Supabase项目的项目引用。


Supabase 代码片段


Supabase 代码片段列表

列出关联项目的所有SQL代码片段

Usage

1
supabase snippets list

Flags

  • --project-ref <字符串>Optional

    Supabase项目的项目引用标识


supabase 代码片段下载

下载指定 SQL 代码片段的内容。

Usage

1
supabase snippets download <snippet-id>

Flags

  • --project-ref <字符串>Optional

    Supabase 项目的项目引用。


supabase 服务

Usage

1
supabase services

supabase 自动补全

为指定的shell生成supabase的自动补全脚本。 有关如何使用生成的脚本的详细信息,请参阅每个子命令的帮助。

Subcommands


supabase 自动补全 zsh

为zsh shell生成自动补全脚本。

如果您的环境中尚未启用shell自动补全功能,您需要先启用它。您可以执行以下命令一次:

echo "autoload -U compinit; compinit" >> ~/.zshrc

要在当前shell会话中加载自动补全功能:

source <(supabase completion zsh)

要为每个新会话加载自动补全功能,请执行一次以下命令:

Linux系统:

supabase completion zsh > "${fpath[1]}/_supabase"

macOS系统:

supabase completion zsh > $(brew --prefix)/share/zsh/site-functions/_supabase

您需要启动一个新的shell才能使此设置生效。

Usage

1
supabase completion zsh [flags]

Flags

  • --no-descriptionsOptional

    禁用补全描述


supabase 自动补全 powershell

生成PowerShell的自动补全脚本。

要在当前shell会话中加载补全:

supabase completion powershell | Out-String | Invoke-Expression

要为每个新会话加载补全,请将上述命令的输出 添加到您的PowerShell配置文件中。

Usage

1
supabase completion powershell [flags]

Flags

  • --no-descriptionsOptional

    禁用补全描述


supabase 自动补全 fish

生成fish shell的自动补全脚本。

要在当前shell会话中加载补全:

supabase completion fish | source

要为每个新会话加载补全,请执行一次:

supabase completion fish > ~/.config/fish/completions/supabase.fish

您需要启动一个新的shell才能使此设置生效。

Usage

1
supabase completion fish [flags]

Flags

  • --no-descriptionsOptional

    禁用补全描述


supabase bash 自动补全

为bash shell生成自动补全脚本。

该脚本依赖'bash-completion'包。 如果尚未安装,您可以通过操作系统的包管理器进行安装。

在当前shell会话中加载补全功能:

source <(supabase completion bash)

要为每个新会话永久加载补全功能,请执行一次以下命令:

Linux系统:

supabase completion bash > /etc/bash_completion.d/supabase

macOS系统:

supabase completion bash > $(brew --prefix)/etc/bash_completion.d/supabase

此设置需要重新启动新的shell才能生效。

Usage

1
supabase completion bash

Flags

  • --no-descriptionsOptional

    禁用补全描述