私はdbDeltaで使用している私は次のSQLを持っている:
$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)
);";
私はエラーを得ています:
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)
書くのではなく、次のようになります。
ALTER TABLE wp_nc_location ADD CONSTRAINT FOREIGN KEY (icon_id) REFERENCES wp_nc_icon (icon_id)
DBDeltaは書き込もうとしています:
ALTER TABLE wp_nc_location ADD COLUMN FOREIGN KEY (icon_id) REFERENCES wp_nc_icon (icon_id)
しかし、icon_idという列が作成されているようです。
Icon_idも外部キーなので(テーブル構造を見ると)、実際には変です。
「予期しない出力」エラーを取り除きたいだけです。 DBDeltaに外部キーを許可させる方法はありますか?
一般的な規則として、 dbDeltaはまだFOREIGN KEY をサポートしていませんが、MySQL 5.1で動作すると言われています(動作しないことを確認できます)。 MySQL 5.5)。