سؤال

باستخدام أداة mysqladmin ، أحاول إنشاء جدول. تقوم الأداة بإنشاء عبارة SQL ، ثم تقوم بإعادة "لا يمكن إنشاء جدول" دون أدنى فكرة أخرى عن الخطأ!

ها هو :

CREATE TABLE `C121535_vubridge`.`Products` (
  `pr_ID` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  `pr_Name` VARCHAR(45) NOT NULL,
  `pr_Type` VARCHAR(2) NOT NULL COMMENT 'H=Hand Series V=VuBridge software E=Event Subs S=Sponsoring',
  `pr_AuthorID` INTEGER UNSIGNED COMMENT '= m_ID (for Bridge Hand Series',
  `pr_SponsorID` INTEGER UNSIGNED NOT NULL,
  `pr_DateCreation` DATETIME NOT NULL,
  `pr_Price` FLOAT NOT NULL,
  `pr_DescriptionText` TEXT,
  `pr_Description` VARCHAR(245),
  PRIMARY KEY (`pr_ID`),
  CONSTRAINT `FK_prAuthor` FOREIGN KEY `FK_prAuthor` (`pr_AuthorID`)
    REFERENCES `Members` (`m_ID`)
    ON DELETE SET NULL
    ON UPDATE NO ACTION,
  CONSTRAINT `FK_Sponsor` FOREIGN KEY `FK_Sponsor` (`pr_SponsorID`)
    REFERENCES `Members` (`m_ID`)
    ON DELETE SET NULL
    ON UPDATE NO ACTION
) ENGINE = InnoDB;

هل يمكن لأحد أن يساعد؟

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

المحلول

يعمل جدول إنشاء لي إذا حذفت مراجع المفاتيح الخارجية:

CREATE TABLE `Products` (
 `pr_ID` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
 `pr_Name` VARCHAR(45) NOT NULL,
 `pr_Type` VARCHAR(2) NOT NULL COMMENT 'H=Hand Series V=VuBridge software E=Event Subs S=Sponsoring',
 `pr_AuthorID` INTEGER UNSIGNED COMMENT '= m_ID (for Bridge Hand Series',
 `pr_SponsorID` INTEGER UNSIGNED NOT NULL,
 `pr_DateCreation` DATETIME NOT NULL,
 `pr_Price` FLOAT NOT NULL,
 `pr_DescriptionText` TEXT,
 `pr_Description` VARCHAR(245),
 PRIMARY KEY (`pr_ID`)
)

... لذلك أنا أميل إلى تصديق ذلك C121535_vubridge.MEMBERS غير موجود بالفعل. C121535_vubridge.MEMBERS يجب إنشاء قبل تشغيل عبارة CREATE TABLE لجدول المنتجات.

نصائح أخرى

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

ألاحظ في الدليل المرجعي أنه إذا تم إعطاء الرمز الفرعي لفقرة القيد (في حالتك ، السلاسل المقبلة قبل المفتاح الخارجي في كل جملة ، FK_prAuthor و FK_Sponsor) يجب أن تكون فريدة من نوعها على قاعدة البيانات. هل هم؟ إذا لم يكن الأمر كذلك ، يمكن حذف هذا الرمز وسيتم تعيين Innodb ثم تلقائيًا.

وبالمثل ، فإن الجداول التي تشير إليها FKS قد لا تحتوي على الهيكل الذي يتوقعه هذا البيان.

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