¿Problemas con DBDelta con la tecla FOREIGN?

4

Tengo el siguiente sql que estoy usando con 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)
            );";

Recibo el error:

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 en lugar de escribir:

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

DBDelta está intentando escribir:

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

Sin embargo, parece que se está creando la columna icon_id, que es todo lo que necesito.

En realidad es raro porque icon_id también es una clave externa (cuando veo la estructura de la tabla).

Solo quiero deshacerme de mi error de "salida inesperada". ¿Hay alguna forma de hacer que DBDelta acepte una clave externa?

    
pregunta redconservatory 08.09.2011 - 20:39

1 respuesta

3

Como regla general, dbDelta aún no es compatible con FOREIGN KEY , aunque me han dicho que funciona en MySQL 5.1 (puedo confirmar que no funciona en MySQL 5.5).

    
respondido por el Gaia 22.05.2012 - 04:25

Lea otras preguntas en las etiquetas