【发布时间】:2011-06-28 21:16:00
【问题描述】:
这是我遇到的一个错误。当我在 Wordpress 中使用 dbDelta 函数时会发生这种情况。我实在想不通,也许其他人有类似的经历?我的代码:
$sql1 = "CREATE TABLE `".$table_name1."` (
`id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`blogid` INT( 11 ) NOT NULL ,
`symbol` VARCHAR( 255 ) NOT NULL
) ENGINE = MYISAM";
我在 theme_switch 操作期间触发此代码。当我打开主题时,它似乎不会发生,只有当我切换到其他东西时(我知道,这很奇怪)。我已阅读并尝试遵循Wordpress.org 中提到的警告,例如在主键和定义之间放置两个空格。我还有另外两段类似的 SQL 代码会产生相同的错误;这三个最初都是由 phpMyAdmin 生成的,所以我知道它们可以工作。
Notice: Undefined offset: 1 in /Applications/MAMP/htdocs/wp-experiment/wp-admin/includes/upgrade.php on line 1463
Notice: Undefined offset: 1 in /Applications/MAMP/htdocs/wp-experiment/wp-admin/includes/upgrade.php on line 1463
Notice: Undefined offset: 1 in /Applications/MAMP/htdocs/wp-experiment/wp-admin/includes/upgrade.php on line 1463
WordPress database error: [Multiple primary key defined]
ALTER TABLE wp_stocks_0 CHANGE COLUMN id `id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY
Warning: Cannot modify header information - headers already sent by (output started at /Applications/MAMP/htdocs/wp-experiment/wp-admin/includes/upgrade.php:1463) in /Applications/MAMP/htdocs/wp-experiment/wp-includes/pluggable.php on line 897
如果我误解了 dbDelta,我或许应该补充一下,上面的代码被执行了好几次......所以表已经存在。但如果我理解 dbDelta,那意味着它根本不应该做任何事情,因为 db 结构中没有什么需要改变。
【问题讨论】: