Supabase RLS插入策略报错解决:uuid与name类型不匹配
解决RLS插入策略的类型不匹配错误
问题根源
user是PostgreSQL的保留关键字,直接在表达式中使用时,PostgreSQL会将其解析为当前会话的用户名(name类型),而auth.uid()返回的是uuid类型,两种类型无法直接比较,因此抛出类型不匹配的错误。
修正后的代码
CREATE POLICY "Enable insert for authenticated users only" ON "public"."Ebooks" AS PERMISSIVE FOR INSERT TO authenticated WITH CHECK (auth.uid() = "user");
说明
- 用双引号包裹
"user"列名,明确指定这是ebooks表中的列,而非PostgreSQL的内置关键字。 - 确保
ebooks表的user列类型为uuid,与auth.uid()返回的类型一致,避免再次出现类型不匹配问题。
内容的提问来源于stack exchange,提问作者HushAtom
相关产品推荐
相关产品推荐

