web-dev-qa-db-fra.com

Des problèmes avec DBDelta avec la clé FOREIGN?

J'ai le sql suivant que j'utilise avec 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)
            );";

Je reçois l'erreur:

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)

Il semble au lieu d'écrire:

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

DBDelta essaie d'écrire:

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

Cependant, il semble que la colonne icon_id soit créée, ce dont j'ai besoin.

En fait c'est bizarre car icon_id est aussi une clé étrangère (quand je regarde la structure de la table).

Je veux juste me débarrasser de mon erreur "sortie inattendue". Existe-t-il un moyen de faire accepter à DBDelta une clé étrangère?

4
redconservatory

En règle générale, dbDelta ne supporte pas encore FOREIGN KEY , même si on me dit que cela fonctionne sur MySQL 5.1 (je peux confirmer que cela ne fonctionne pas sur MySQL 5.5).

3
Gaia