用Vercel+Supabase搭建Umami 遇到的坑

昨天为了节约时间,用了Umami Cloud官方的免费版本做统计,正在美滋滋中,后来有水友留言说官方的一言不合就要停一下,官方的界面,其实还挺好

反正自己也想搭建,果断的自己搞一个出来吧,首先想到的是keyob.app,尽管他老是跳验证,验证还慢,但他支持docker直接部署,就再用用吧

直接建立一个,用上aiven.io的Mysql,因为keyob的免费机房只能选 华盛顿和法兰克福,所以aiven只能选弗吉尼亚节点

轻松成功,但是速度相当不令人如意…挺慢的,而且因为keyob.app的免费版限制,不能绑定域名,就不能白嫖CF大善人的加速了..

keyob+aiven

谷歌了下,果然有VERCEL上也可以部署,瞅了瞅vercel的节点,又看了看AIVEN的节点,想着umami还支持pasql,于是果断想起了另一个大善人supabase,节点多,速度快

老步骤:

  1. 创建一个supabase数据库,获取连接串 postgres://帐号:[password]@host:6543/postgres
  2. fockumami
  3. 在vercel新建项目,勾选fork的umami,然后在 Environment Variables 里添加一个KEY,名字为DATABASE_URL,值就是上面的串
  4. deploy
  5. enjoy

本想有教程在,不出意外就成功了,结果不出意外之外的就出意外了,报错..

prepared statement “s0” does not exist

错误信息

[23:18:04.355] ✗ Command failed: prisma migrate deploy
[23:18:04.355] Error: Schema engine error:
[23:18:04.355] db error: ERROR: prepared statement "s0" does not exist

官方git解决方案

马上去umami的git上查,结果还真和我一样的,在这里 issues#2426>>
最后得到的解决方法:
就是在
postgres://帐号:[password]@host:6543/postgres后面加 ?pgbouncer=true
再重启 supabase 就好了

还是有错

好家伙,果断加上,然后重新部署,想着又就好了,结果又出意外了,卡在了

[23:17:56.843] ✓ DATABASE_URL is defined.
[23:17:58.048] ✓ Database connection successful.
[23:18:00.166] ✓ Database version check successful.

一直卡住~~不动了…

继续查找

去搜,似乎所有的都指向上面这个,突然在一个回复看到 supabase取消了pgbouncer兼容性,于是去翻官方关于prisma的说明,正好,被我谷歌到了

原文在此:https://supabase.com/partners/integrations/prisma

官方专门说明了这个:

也就是说,要获取会话连接池字符串,应该用

postgres://[db-user].[project-ref]:[db-password]@aws-0-[aws-region].pooler.supabase.com:5432/[db-name]

而不是默认的事务池连接

postgres://[db-user].[project-ref]:[db-password]@aws-0-[aws-region].pooler.supabase.com:6543/[db-name]?pgbouncer=true&connection_limit=1

解决

把 DATABASE_URL 的值从

postgres://帐号:[password]@host:6543/postgres

改为

postgres://帐号:[password]@host:5432/postgres

一切正常….

正在加载AI对本文的看法
说说 归档 标签 朋友 关于
arrow_up
theme