Chaves estrangeiras e erros do MySQL

Eu tenho o seguinte script para criar uma tabela no MySQL versão 5.1, que é para se referir a 3 outras tabelas. Todas as 3 tabelas foram criadas usando InnoDB, e todas as 3 tabelas possuem a coluna ID definida como INT.

Eu criei outras tabelas com sucesso, que fazem referência a ACCOUNT e PERSON, no entanto, esta é a primeira tabela que faz referência a ADDRESS, então incluí a definição para essa tabela, como executar, abaixo também.

O erro que estou recebendo é ERROR 1005 (HY000) com errno 150, que eu entendo estar relacionado à criação de chave estrangeira.

O script que falha é (colunas extras removidas para simplificar):

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;

A instrução SQL usada para criar a tabela ADDRESS está abaixo (colunas extras removidas para simplificar).

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;

Eu naveguei por várias perguntas aqui lidando com problemas semelhantes, mas a maioria parece ser definições duplicadas e tipos de campos não correspondentes, assim como alguns não usam InnoDB para uma ou outra das tabelas. No entanto, nenhum destes parece ser o problema. Alguma ideia?

questionAnswers(1)

yourAnswerToTheQuestion