プラグイン(register_activation_hook())をアクティブにするときに、dbDeltaでFOREIGN KEYを使用しています。初めてテーブルを作成するときはうまくいきますが、テーブルの更新時にエラーが出力されます(テーブルはすでに存在していますが、テーブルで変更を行う必要があります)。助言がありますか?
if(GLOBAL_PLUGIN_VERION != get_option("GLOBAL_PLUGIN_VERSION")){
$sql = "CREATE TABLE `".TEST_TABLE."` (
`id` INT( 11 ) NOT NULL AUTO_INCREMENT,
`title` VARCHAR( 100 ) NOT NULL,
`description` TEXT DEFAULT NULL,
`location_id` INT( 11 ) NOT NULL,
PRIMARY KEY (`id`),
FOREIGN KEY (`location_id`) REFERENCES `".TEST2_TABLE."` (`id`)
);";
}
エラー:
PHP通知:未定義のオフセット:1568行目のwp-admin/upgrade.phpに1
WordPressデータベースエラーSQL構文にエラーがあります。 MySQLサーバーのバージョンに対応するマニュアルで、 'FOREIGN KEY(
location_id
)リファレンスtest2
(id
) '1行目のクエリALTER TABLE test ADD COLUMN FOREIGN KEY(location_id
)リファレンスtest2
(id
)作成者...WordPressデータベースエラークエリに対して定義された複数の主キーALTER TABLE TEST ADD PRIMARY KEY(
id
)作成者...
Codex から:
ただし、dbDelta関数はかなりうるさいことに注意してください。例えば: [...]
- フィールド名の前後にアポストロフィやバッククォートを使用しないでください。
$sql = "CREATE TABLE ".TEST_TABLE." (
id INT( 11 ) NOT NULL AUTO_INCREMENT,
title VARCHAR( 100 ) NOT NULL,
description TEXT DEFAULT NULL,
location_id INT( 11 ) NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (location_id) REFERENCES ".TEST2_TABLE." (id)
);";