إصلاح · سوبابيس وقواعد البيانات
فشل الإدخال: new row violates row-level security policy
تعطّل عملك
ما قد تراه
- يفشل حفظ نموذج أو إنشاء سجل للمستخدمين المسجلين أو الزوار
- لا يستطيع تطبيقي حفظ بيانات النموذج في جدول قاعدة البيانات
- يذكر الخطأ أمان مستوى الصف أو سياسة (policy)
السبب الأرجح
أمان مستوى الصف مفعّل للجدول ولا توجد سياسة تسمح لهذا النوع من المستخدمين (زائر أو مسجّل) بإضافة ذلك السجل.
افحص أولاً (نحو دقيقتين)
- في لوحة Supabase افتح صفحة سياسات الجدول: هل توجد سياسة INSERT؟ (قد يختلف اسم الصفحة)
- تحقق من الدور الذي يجري الاستدعاء: غير مسجل (anon) أو مسجل (authenticated).
أمر الإصلاح
ما تكتبه هنا لا يغادر متصفحك. البحث يعمل داخل هذه الصفحة ولا يُرسل شيء إلى خادم ولا إلى ذكاء اصطناعي.
يبقى في هذا المتصفح وعلى هذا الجهاز فقط. تُحذف المفاتيح وكلمات المرور قبل أي حفظ.
لغة الأمر
الصقه في Claude أو ChatGPT أو Gemini أو Cursor ثم اتبع ما يقوله.
بعد أن جرّبته، هل نجح؟
الخطوات
- اعرض لي تعريف الجدول وسياساته الحالية (من محرر SQL أو ملفات الهجرة).
- أخبرني من يجب أن يُسمح له بالإدخال (أي أحد أو المسجلون أو صاحب السجل فقط) واسألني إن لم يكن واضحاً.
- اكتب أضيق سياسة INSERT بعبارة WITH CHECK مناسبة (مثل user_id = auth.uid()) للدور الصحيح فقط.
- أعطني السياسة كملف هجرة (migration) وأخبرني كيف أختبرها كمستخدم عادي وليس كمدير.
لا تفعل هذا
- لا تكتب سياسة using (true) لكل الأدوار على جدول فيه بيانات خاصة.
- لا توقف أمان مستوى الصف.
- لا تستخدم مفتاح service role في المتصفح للالتفاف عليه.