0

このクエリを使用して外部キーを追加しようとしました:

ALTER TABLE `StripeBilling`
        ADD CONSTRAINT `StripeBillingPatientRef`
         FOREIGN KEY (PatientRef)
          REFERENCES `Patient`(`PatientId`)
            ON DELETE SET NULL;

私のテーブル mysql_dump は次のとおりです。

CREATE TABLE IF NOT EXISTS `StripeBilling` (
  ...
  `PatientRef` int(10) unsigned DEFAULT NULL,
  ...
) ENGINE=InnoDB AUTO_INCREMENT=10000000 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
ALTER TABLE `StripeBilling`
  ADD PRIMARY KEY (`StripeBillingId`), ADD KEY `StripeBillingAgentRef` (`AgentRef`), ADD KEY `PatientRef` (`PatientRef`);
ALTER TABLE `StripeBilling`
  MODIFY `StripeBillingId` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=10000000;
ALTER TABLE `StripeBilling`
ADD CONSTRAINT `StripeBillingAgentRef` FOREIGN KEY (`AgentRef`) REFERENCES `Agent` (`AgentId`) ON DELETE SET NULL;

患者のテーブルは次のとおりです。

CREATE TABLE IF NOT EXISTS `Patient` (
  `PatientId` int(10) unsigned NOT NULL,
  ...
) ENGINE=InnoDB AUTO_INCREMENT=10000000 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
ALTER TABLE `Patient`
  ADD PRIMARY KEY (`PatientId`), ADD UNIQUE KEY `PatientSerial` (`PatientSerial`);
ALTER TABLE `Patient`
  MODIFY `PatientId` int(10) unsigned NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=10000000;

しかし、MySQL はエラーを返します。

子行を追加または更新できません: 外部キー制約が失敗しました ( newportal_enc. #sql-3863_9f, CONSTRAINT StripeBillingPatientRef FOREIGN KEY ( PatientRef) REFERENCES Patient( PatientId) ON DELETE SET NULL)

newportal_enc.#sql-3863_9fデータベースにテーブルが存在しないため、混乱しています。

これはインデックスの存在によるものではありませんPatientRef。このインデックスを削除した後も問題が解決しないためです。

このエラーが発生する理由と解決方法を教えてください。

4

0 に答える 0