Menu

手动更新数据库升级命令行操作

提示

在 Nexty v2.1.0 和 nexty-flu-kontext v1.2.0 起,均支持命令行更新数据库,如果你的代码版本比较旧,可以根据本文档进行升级。

第一步:更新命令

package.json 添加命令

{
  // ...
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "next lint",
    "analyze": "ANALYZE=true next build",
    "db:push": "supabase db push", // 复制这些 db 命令到你的 package.json
    "db:pull": "supabase db pull",
    "db:reset": "supabase db reset",
    "db:new-migration": "supabase migration new",
    "db:gen-types": "supabase gen types typescript --project-id $(cat supabase/.temp/project-ref) --schema public > lib/supabase/types.ts",
    "db:login": "supabase login",
    "db:link": "supabase link",
    "db:update": "npm run db:push && npm run db:gen-types"
  },
  // ...
}

第二步:关联 Supabase 项目

依次执行 npm run db:loginnpm run db:link,自动创建 supabase 文件夹并关联远程 Supabase 项目

第三步:同步 Supabase 定义

执行 npm run db:pull,从 Supabase 拉取数据库定义。这一步需要安装 Docker 才能执行,请自行安装。执行时间可能比较久,需要等待几分钟。

完成后 supabase/migrations 会出现一个 sql 文件,这个文件同步了所有 Supabase 上的定义,也就是以前你在 SQL Editor 手动执行的全部数据库定义,现在你的本地数据库和远程已经同步了,以后可以使用命令操作,无需手动执行命了

现在你可以选择删除原有的 data 文件夹及里面的 sql 文件,也可以保留它,但不要移入 supabase/migrations,因为 supabase/migrations 现在已经跟 Supabase 同步了,多余的文件会造成冲突。

总结

升级完成后,以后新增的 sql 文件只需要放入 supabase/migrations,并根据数据库开发示例的步骤操作即可。