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?
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).