Fremdschlüssel und MySQL-Fehler

Ich habe das folgende Skript, um eine Tabelle in MySQL Version 5.1 zu erstellen, die auf 3 andere Tabellen verweisen soll. Alle 3 Tabellen wurden mit InnoDB erstellt, und für alle 3 Tabellen ist die ID-Spalte als INT definiert.

Ich habe erfolgreich andere Tabellen erstellt, die auf ACCOUNT und PERSON verweisen. Dies ist jedoch die erste Tabelle, die auf ADDRESS verweist. Daher habe ich die Definition für diese Tabelle unten ebenfalls als run eingefügt.

Der Fehler, den ich erhalte, ist FEHLER 1005 (HY000) mit Fehlernummer 150, von dem ich verstehe, dass er sich auf die Fremdschlüsselerstellung bezieht.

Das fehlgeschlagene Skript lautet (zusätzliche Spalten wurden der Einfachheit halber entfernt):

CREATE TABLE WORK_ORDER (
    ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ACCOUNT_ID INT NOT NULL,
    CUSTOMER_ID INT NOT NULL,
    SALES_ID INT,
    TRADES_ID INT,
    LOCATION_ID INT NOT NULL,
    INDEX CUST_INDEX(CUSTOMER_ID),
    INDEX SALES_INDEX(SALES_ID),
    INDEX TRADES_INDEX(TRADES_ID),
    INDEX ACCOUNT_INDEX(ACCOUNT_ID),
    INDEX LOCATION_INDEX(LOCATION_ID),
    FOREIGN KEY (CUSTOMER_ID) REFERENCES PERSON(ID) ON DELETE CASCADE,
    FOREIGN KEY (SALES_ID) REFERENCES PERSON(ID) ON DELETE SET NULL,
    FOREIGN KEY (TRADES_ID) REFERENCES PERSON(ID) ON DELETE SET NULL,
    FOREIGN KEY (ACCOUNT_ID) REFERENCES ACCOUNT(ID) ON DELETE CASCADE,
    FOREIGN KEY (LOCATION_ID) REFERENCES ADDRESS(ID) ON DELETE SET NULL
) ENGINE=InnoDB;

Die zum Erstellen der ADDRESS-Tabelle verwendete SQL-Anweisung befindet sich unten (zusätzliche Spalten wurden der Einfachheit halber entfernt).

CREATE TABLE ADDRESS (
    ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    PERSON_ID INT NOT NULL,
    ACCOUNT_ID INT NOT NULL,
    ADDRESS_L1 VARCHAR(50),
    ADDRESS_L2 VARCHAR(50),
    CITY VARCHAR(25),
    PROVINCE VARCHAR(20),
    POSTAL_CODE VARCHAR(6),
    COUNTRY VARCHAR(25),
    INDEX CUST_INDEX(PERSON_ID),
    INDEX ACCOUNT_INDEX(ACCOUNT_ID),
    FOREIGN KEY (ACCOUNT_ID) REFERENCES ACCOUNT(ID) ON DELETE CASCADE,
    FOREIGN KEY (PERSON_ID) REFERENCES PERSON(ID) ON DELETE CASCADE
) ENGINE=InnoDB;

Ich habe hier einige Fragen zu ähnlichen Problemen durchgesehen, aber die meisten scheinen doppelte Definitionen und nicht übereinstimmende Feldtypen zu sein, und einige verwenden InnoDB nicht für die eine oder andere Tabelle. Keines davon scheint jedoch das Problem zu sein. Irgendwelche Ideen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage