سؤال

لقد قمت بفحص مخططتي المزدوجة ، وصحيحها ... قامت عقيدة إنفاكت أيضًا ببناءها مرة واحدة .. والآن تزعجني مع بعض علاقات FK ... لقد قمت بالتحقق من أنواع البيانات أيضًا. كلها int (4) أو int (2)

2 Qs هنا: 1. هل هناك حد أعلى لعدد العلاقات (التبعيات/FKS) يمكن أن يكون هناك جدول؟ لدي ما يصل إلى 7 FKS في الجداول 2. هل هناك حد أعلى لحساب الجداول التي تشير إلى جدول الأصل (PK)؟ لديّ 30 حقلًا في 20 جداول تشير إلى عمود معرف واحد في الجدول خيارات 3. هل التعريف لسلوك Cascase مطلوب؟ لم أستخدمها!

هل من الأفضل أن تعيش بدون علاقات في هذه الحالة؟

الخطأ هو:

 SQLSTATE[HY000]: General error: 1005 Can't create table 'sokidb.#sql-268_1d' (errno: 121). Failing Query: "ALTER TABLE Acc_Gl_Accounts ADD CONSTRAINT Acc_Gl_Accounts_society_id_Soc_Societies_id FOREIGN KEY (society_id) REFERENCES Soc_Societies(id)". Failing Query: ALTER TABLE Acc_Gl_Accounts ADD CONSTRAINT Acc_Gl_Accounts_society_id_Soc_Societies_id FOREIGN KEY (society_id) REFERENCES Soc_Societies(id)  

كما قمت بإطلاق الاستعلامات في MySQL مباشرة ، فإنها تؤدي إلى نفس الخطأ.

هل كانت مفيدة؟

المحلول

الناس ، خلال الأيام القليلة الماضية أدركت أنه ربما لا توجد مشكلة معروفة مع العقيدة.

كان خطأي أنني قد حددت خيارًا لمفتاحي في جدول واحد "غير موقّع: صحيح" ولم أتكرر نفسه بالنسبة لتعريف FK :( كل خطأي ، ولكن الحل هو التحقق المزدوج من أنواع البيانات.

وأفضل طريقة لتصحيح الأخطاء ذات الصلة MySQL هي التحقق من البرنامج النصي SQL الذي تم إنشاؤه. يمكنك بسهولة اكتشاف الاختلافات في تعريفات الأعمدة.

شكرا جون ، على اهتمامك.

نصائح أخرى

من المحتمل أنك تستخدم جداول InNODB ، والتي تعد افتراضية لإصدارات MySQL الحديثة وتجربة خطأ في قيود الأجنبية. قرأت هنا للحصول على قائمة كاملة من العوامل.

يجب أن يكون للأعمدة المقابلة في المفتاح الخارجي والمفتاح المشار إليه أنواع بيانات داخلية مماثلة داخل InnoDB بحيث يمكن مقارنتها بدون تحويل النوع. يجب أن يكون حجم وعلامة أنواع عدد صحيح هي نفسها. لا يجب أن يكون طول أنواع السلسلة هو نفسه. بالنسبة لأعمدة السلسلة غير الثنائية (حرف) ، يجب أن تكون مجموعة الأحرف والترتيب هي نفسها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top