Внешние ключи и ошибки MySQL

У меня есть следующий скрипт для создания таблицы в MySQL версии 5.1, которая должна ссылаться на 3 другие таблицы. Все 3 таблицы были созданы с использованием InnoDB, и все 3 таблицы имеют столбец ID, определенный как INT.

Я успешно создал другие таблицы, которые ссылаются на ACCOUNT и PERSON, однако это первая таблица, которая ссылается на ADDRESS, поэтому я 'Мы также включили определение для этой таблицы, как показано ниже.

Ошибка, которую я 'Я получаю ОШИБКУ 1005 (HY000) с ошибкой 150, которая, как я понимаю, относится к созданию внешнего ключа.

Сценарий, который не работает (лишние столбцы удалены для простоты):

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;

Оператор SQL, использованный для создания таблицы ADDRESS, приведен ниже (лишние столбцы удалены для простоты) .I '

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;

Мы просмотрели здесь несколько вопросов, связанных с похожими проблемами, но большинство, похоже, являются дублирующими определениями и несоответствующими типами полей, а также некоторые не используют InnoDB для одной или другой таблицы. Тем не менее, ни один из них, похоже, не является проблемой. Есть идеи?

Ответы на вопрос(1)

Ваш ответ на вопрос