我有一个简单的脚本,可以将一个.txt文件上传到一个名为“培训-数据”的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)
FYI,我测试了手动上传的下载文件,它可以工作,所以只是上传给我带来了问题。以下是我的插入对象策略:
CREATE POLICY "Make inserting training data publicly available (INSERT)" ON "storage"."objects"
AS PERMISSIVE FOR INSERT
TO public
WITH CHECK (bucket_id = 'training-data')
发布于 2022-07-24 19:42:42
尝试更改桶名:
supabase.storage().from_("training-data").upload("test.txt", file)
我查了我的密码:
Future<StorageResponse> _uploadFile() async {
final supabase = Supabase.instance.client;
const file = '/Users/igdmitrov/DEV/Test.txt';
final response = await supabase.storage
.from('training-data')
.upload('text.txt', File(file));
print(response.error);
return response;
}
它与政策一起工作:
CREATE POLICY "Give users authenticated access to folder 1ov7tml_0" ON storage.objects FOR INSERT TO public WITH CHECK (bucket_id = 'training-data');
CREATE POLICY "Give users authenticated access to folder 1ov7tml_1" ON storage.objects FOR SELECT TO public USING (bucket_id = 'training-data');
https://stackoverflow.com/questions/73070429
复制相似问题