手动更新数据库升级命令行操作
提示
在 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:login
、 npm 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
,并根据数据库开发示例的步骤操作即可。