Hugo | umami部署踩坑记录

前言

之前参考了下面这两篇文章给博客加上umami这个数据工具,但是在一开始部署的时候并没有直接成功,出现了一些预料之外的错误,想通过这篇文章记录下,在部署的时候遇到的问题

部署

鉴定来说部署分为4个部分:

  1. 创建数据库-设置supabase
  2. 将项目部署至Vercel
  3. 登录umami站点,并添加需要监控的网站
  4. umami生成的js代码,放入到博客项目的入口文件中

笔者是在上面的第2步,也就是在部署的这一步卡住的,当点击Deploy按钮之后,会发现项目部署失败了

查看项目部署时候的日志记录可以发现出现了如下的信息:

截图

这里可以看到报的错误是must be owner of table event,这个是个权限问题,说明在supabase跑SQL语句的时候的创建的表格所有者(owner)并不是此时部署时候需要的所有者(owner):postgres

顺着这个解决思路找到了一段可以修改数据库中表格所有者(owner)的一段SQL如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
DO $$DECLARE r record;
DECLARE
    v_schema varchar := 'public';
    v_new_owner varchar := 'postgres';
BEGIN
    FOR r IN 
        select 'ALTER TABLE "' || table_schema || '"."' || table_name || '" OWNER TO ' || v_new_owner || ';' as a from information_schema.tables where table_schema = v_schema
        union all
        select 'ALTER TABLE "' || sequence_schema || '"."' || sequence_name || '" OWNER TO ' || v_new_owner || ';' as a from information_schema.sequences where sequence_schema = v_schema
        union all
        select 'ALTER TABLE "' || table_schema || '"."' || table_name || '" OWNER TO ' || v_new_owner || ';' as a from information_schema.views where table_schema = v_schema
        union all
        select 'ALTER FUNCTION "'||nsp.nspname||'"."'||p.proname||'"('||pg_get_function_identity_arguments(p.oid)||') OWNER TO ' || v_new_owner || ';' as a from pg_proc p join pg_namespace nsp ON p.pronamespace = nsp.oid where nsp.nspname = v_schema
    LOOP
        EXECUTE r.a;
    END LOOP;
END$$;

把之前的几张表格删除后,重新跑教程中给出的初始化数据库代码,然后再将上面的SQL语句放入supabase中执行后,重新部署(Deploy)即可解决

截图