اذهب إلى المحتوى
  • 0

حل لخطأ "Cannot add or update a child row: a foreign key constraint fails"

السؤال

نشر (معدل)

لما ارسل لجدولين مربوطين ب foreign key يطلع لي هذا الايرور

 

Cannot add or update a child row: a foreign key constraint fails (`hospital`.`doctor`, CONSTRAINT `u_id` FOREIGN KEY (`user_id`) REFERENCES `employes` (`U_id`) ON DELETE RESTRICT ON UPDATE RESTRICT)

تم التعديل في بواسطة Mustafa Suleiman
تعديل عنوان السؤال

Recommended Posts

  • 0
نشر

سببه أنك تحاولين إضافة أو تحديث صف مرتبط بقيد أب (foreign key) ولكن القيد الأب غير موجود في الجدول المرجع (referenced table) أو عندما يتعارض العمل بتحديث القيد الأب مع قيد الابن (child key) المرتبط به

ورسالة الخطأ تعني إلى أنه لا يمكنك إضافة أو تحديث صف في جدول doctor لأنه يتضمن قيد أب مرتبط بجدول employes والقيد الأب (user_id) المحدد غير موجود في جدول employes.

وربما تكون قيمة user_id التي تحاولين إضافتها غير موجودة في جدول employes، أو تحاولين تحديث قيمة user_id التي تشير إلى قيد غير موجود في جدول employes.

لذلك تحققي من وجود قيمة user_id في جدول employes المشار إليه في الخطأ، وتأكدي من أن القيد الأب المحدد موجود بالفعل في الجدول المرجع.

وفي حال كانت القيمة موجودة في جدول employes، تحققي من نوع البيانات لحقل user_id في جدول doctor ومن أنه يتوافق مع نوع البيانات في حقل U_id في جدول employes، حيث يجب أن يكون نوع البيانات والطول والتنسيق متطابقين.

أيضًا التأكد من أن لديك الصلاحيات الكافية لإضافة أو تحديث الصفوف في جدول doctor وجدول employes.

وربما السبب هو أنه هناك تعارض في العلاقة بين الجدولين، فتحققي من القيود (constraints) الموجودة على العلاقة بين الجدولين وتأكد من أنها معرفة بشكل صحيح وتتوافق مع البيانات الموجودة.

  • 0
نشر

هذا الخطأ يشير إلى أنه تم محاولة إدخال قيمة في جدول يعتمد على مفتاح خارجي (foreign key) ولكن القيمة المحددة لا توجد في جدول المفتاح الأجنبي المشار إليه.

يحدث هذا الخطأ عندما يكون لديك قيد مفتاح خارجي (foreign key constraint) يربط جدولًا بجدول آخر، وعند إضافة أو تحديث سجل في الجدول الأول، يتم التحقق من وجود القيمة المشار إليها في الجدول المشار إليه.

لحل هذا الخطأ، يجب التأكد من أن القيمة التي تحاول إدخالها كقيمة مفتاح خارجي موجودة بالفعل في جدول المفتاح الأجنبي المشار إليه. يمكنك التحقق من ذلك بمطابقة القيمة مع القيم الموجودة في الجدول المشار إليه.

على سبيل المثال، في رسالة الخطأ التي قدمتها، القيمة التي تحاول إدخالها في الجدول `doctor` في عمود `user_id` غير موجودة في جدول `employes` في عمود `U_id`. يجب التأكد من أن القيمة المحددة لـ `user_id` في الجدول `doctor` موجودة كـ `U_id` مقابلها في جدول `employes`.

إذا كنت متأكدًا من وجود القيمة المناسبة في الجدول المشار إليه ولا تزال تواجه هذا الخطأ، فقد يكون هناك مشكلة أخرى مرتبطة بقيود المفتاح الأجنبي أو هناك بعض الأعمال المعلقة التي تسبب تعارضًا. في هذه الحالة، يمكنك التحقق من بعض الأمور مثل ترتيب عمليات الإدخال أو التحديث أو التحقق من القيود المتعلقة بالمفتاح الأجنبي في قاعدة البيانات.

  • 0
نشر

لتوضيح الشرح السابق لنفترض أن لديك جدولان، جدول الموظفين (employes) وجدول الأطباء (doctor)، ويوجد علاقة بين الجدولين حيث يحتوي جدول الأطباء على مفتاح خارجي (user_id) يشير إلى مفتاح رئيسي (U_id) في جدول الموظفين. ويفترض أن جدول الموظفين يحتوي على سجلات بيانات الموظفين بما في ذلك رقم الموظف والاسم والعنوان والبريد الإلكتروني.

الآن، لنفترض أنك تحاول إضافة سجل جديد في جدول الأطباء، ولكن تواجه خطأ يشير إلى أنه لا يمكن إضافة السجل لأن القيمة المراد إضافتها في مفتاح الخارجي (user_id) غير موجودة في جدول الموظفين. يمكن أن يكون الخطأ كالتالي:

Cannot add or update a child row: a foreign key constraint fails (`hospital`.`doctor`, CONSTRAINT `u_id` FOREIGN KEY (`user_id`) REFERENCES `employes` (`U_id`) ON DELETE RESTRICT ON UPDATE RESTRICT)

هذا يعني أنه لا يمكن إضافة سجل جديد في جدول الأطباء مع user_id قيمته 5 (على سبيل المثال) إذا لم يكن هناك سجل في جدول الموظفين يحمل رقم الموظف 5.

لحل هذه المشكلة، يجب التأكد من وجود سجل برقم الموظف 5 في جدول الموظفين قبل إضافة سجل جديد في جدول الأطباء. وإذا كانت قيمة مفتاح الخارجي (user_id) المراد إضافتها موجودة في جدول الموظفين، يجب التحقق من عدم وجود قيود أخرى في جدول الأطباء تمنع إضافة سجل جديد بهذه القيمة.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...