web-dev-qa-db-ja.com

FOREIGNキーを使ったDBDeltaの問題?

私は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に外部キーを許可させる方法はありますか?

4
redconservatory

一般的な規則として、 dbDeltaはまだFOREIGN KEY をサポートしていませんが、MySQL 5.1で動作すると言われています(動作しないことを確認できます)。 MySQL 5.5)。

3
Gaia