【发布时间】:2022-12-16 02:19:17
【问题描述】:
我有一个简单的脚本,用于将 .txt 文件上传到名为“training-data”的 Supabase 存储桶中。存储桶已公开,我确保包含必要的存储/对象策略以允许访问。我知道其他人和我一样遇到了以下错误,但我设法使用策略修复了它:
'new row violates row-level security policy for table "objects"'
我现在的问题是,它给了我一个不同的错误,据我所知,以前没有人遇到过:
storage3.utils.StorageException: {'statusCode': 400, 'error': 'Key is not present in table "buckets".', 'message': 'insert or update on table "objects" violates foreign key constraint "objects_bucketId_fkey"'}
我不确定为什么它告诉我我的存储桶是一个表并且它需要一个唯一的标识符键。我该如何解决?我的代码如下:
from supabase import create_client
from dotenv import load_dotenv
import os
load_dotenv()
url = os.environ.get("DEPLOY_URL")
key = os.environ.get("DEPLOY_KEY")
supabase = create_client(url, key)
data = supabase.table("Blog Data").select("*").execute()
file = "dzonescrape\\dzonescrape\\spiders\\test.txt"
# data = supabase.storage().from_("public/training-data").download("test.txt")
# print(data)
supabase.storage().from_("public/training-data").upload("test.txt", file)
仅供参考,我测试了下载手动上传的文件,并且它有效,所以只是上传给我带来了问题。这是我的插入对象策略:
CREATE POLICY "Make inserting training data publicly available (INSERT)" ON "storage"."objects"
AS PERMISSIVE FOR INSERT
TO public
WITH CHECK (bucket_id = 'training-data')
【问题讨论】:
-
存储桶中是否已有
test.txt文件? -
我确保在尝试插入时将其删除。
-
您是否尝试过将
upload()与更新插入集一起使用?例如.from_("training-data").upload('test.txt', file, file_options={"x-upsert": "true"}) -
是的,我有,但它仍然给我同样的错误。
标签: python database supabase supabase-database