Problemas com DBDelta com chave ESTRANGEIRA?

4

Eu tenho o seguinte sql que estou usando com dbDelta:

$sql .= "CREATE TABLE " . $location_table . " (
            location_id MEDIUMINT(9) NOT NULL AUTO_INCREMENT,
            name VARCHAR (100),
            street_no VARCHAR (5),
            street_name VARCHAR (75),
            city VARCHAR (75),
            province_state VARCHAR (75),
            postal_code VARCHAR(10),
            country VARCHAR (75),
            post_page_url VARCHAR(300),
            icon_id MEDIUMINT(9),
            PRIMARY KEY  (location_id),
            FOREIGN KEY (icon_id) REFERENCES ".$wpdb->prefix."nc_icon (icon_id)
            );";

Estou recebendo o erro:

WordPress database error: [You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FOREIGN KEY (icon_id) REFERENCES wp_nc_icon (icon_id)' at line 1]
ALTER TABLE wp_nc_location ADD COLUMN FOREIGN KEY (icon_id) REFERENCES wp_nc_icon (icon_id)

Parece que, em vez de escrever:

ALTER TABLE wp_nc_location ADD CONSTRAINT FOREIGN KEY (icon_id) REFERENCES wp_nc_icon (icon_id)

DBDelta está tentando escrever:

ALTER TABLE wp_nc_location ADD COLUMN FOREIGN KEY (icon_id) REFERENCES wp_nc_icon (icon_id)

No entanto, parece que a coluna icon_id está sendo criada, o que eu preciso.

Na verdade, é estranho porque icon_id também é uma chave estrangeira (quando eu olho para a estrutura da tabela).

Eu só quero me livrar do meu erro "saída inesperada". Existe uma maneira de fazer o DBDelta aceitar uma chave estrangeira?

    
por redconservatory 08.09.2011 / 20:39

1 resposta

3

Como regra geral, o dbDelta ainda não suporta a FOREIGN KEY , embora tenha me dito que funciona no MySQL 5.1 (posso confirmar que ele não funciona no MySQL 5.5).

    
por Gaia 22.05.2012 / 04:25

Tags