激活插件(register\\u activation\\u hook())时,我将外键与dbDelta一起使用。它在第一次创建表时效果很好,但在更新表时会输出错误(表已经存在,但必须对表进行更改)。有什么建议吗?
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注意:wp管理/升级中未定义的偏移量:1。php在线1568
WordPress数据库错误您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以了解使用near“外键”的正确语法(location_id
) 参考文献test2
(id
)\' 在查询ALTER TABLE test的第1行添加列外键(location_id
) 参考文献test2
(id
) 制作人。。。
WordPress数据库错误为查询ALTER TABLE TEST ADD primary key定义了多个主键(id
) 制作人。。。
SO网友:Pat J
从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)
);";