PGRST116 رمز خطأ من Supabase، ورسالته JSON object requested, multiple (or no) rows returned ترجمتها «طُلب عنصر واحد، ورجع أكثر من سطر أو ولا سطر». معناها: الكود طلب سطر واحد بالضبط من قاعدة البيانات، والطلب لقى صفر سطور أو أكثر من سطر، فرفض Supabase يختار من عنده.
الترجمة كلمة بكلمة
| الرسالة | الترجمة | إيش تعني |
|---|---|---|
PGRST116 | رمز الخطأ | رمز من PostgREST، الجزء اللي يرد على طلبات البيانات في Supabase |
JSON object requested | طُلب عنصر واحد | الكود استخدم .single(): «أبي سطر واحد بالضبط» |
multiple (or no) rows returned | رجع أكثر من سطر أو ولا سطر | الطلب ما لقى سطر واحد بالضبط |
Cannot coerce the result to a single JSON object | ما يمكن تحويل النتيجة لعنصر واحد | نفس الخطأ بصيغة أحدث |
The result contains 0 rows | النتيجة فيها صفر سطور | السطر مخفي أو ناقص |
The result contains 2 rows | النتيجة فيها سطرين | السطر مكرر أو الفلتر واسع |
السطرين الأخيرين يطلعون في حقل details في نفس الرد، وهم أهم شي في الخطأ: الصفر والاثنين لهم أسباب مختلفة تمامًا.
وين تشوفها
في Console (اضغط F12) أو في تبويب Network، والطلب حالته 406. المستخدم يشوف صفحة فاضية أو متعطّلة، مثل صفحة الحساب أو صفحة طلب. والرسالة ما تتترجم للعربي، لأنها رد من Supabase كما هو.
مشكلتك ولا مشكلة الموقع؟
- إذا أنت مستخدم: ما فيه شي تسويه من جهازك. المشكلة في بيانات المنتج أو كوده.
- إذا المنتج منتجك: شوف رقم السطور في details أول. صفر غالبًا يعني إن قواعد RLS تخفي السطر عن المستخدم، أو إن السطر ما انضاف أصلًا. اثنين غالبًا يعني إن السطر انضاف مرتين لنفس المستخدم، أو إن الفلتر يجيب أكثر من اللازم.
إيش تكتب لـ Lovable أو Bolt أو Cursor
الاقتراح اللي يجي كثير: تبديل .single() بـ .maybeSingle() في كل مكان. الخطأ يختفي، والسطر الناقص أو المكرر يبقى. أعطها الرقم من details، وانسخ هذا:
A Supabase query fails with PGRST116 (406): "JSON object requested, multiple (or no) rows returned".
The details field says: <The result contains 0 rows / 2 rows>.
The query is in <file>, on table <table>, for <which user or record>.
If 0 rows: check whether RLS hides the row from this user, or whether the row was never created.
If 2+ rows: find where the duplicate rows come from and whether a unique constraint is missing.
Do not replace .single() with .maybeSingle() everywhere to hide the error.الحل خطوة بخطوة
كيف تعرف كم سطر رجع الطلب، والحل حسب الرقم، في درس JSON object requested, multiple (or no) rows returned: إيش يعني؟. وإذا الصفر سببه RLS، شوف new row violates row-level security في Supabase.
وإذا تبي أحد يتأكد إن بيانات عملائك سليمة قبل الإطلاق، حل مشاكل تطبيقك يبدأ بفحص مكتوب قبل أي تعديل.