这是我遇到的一个错误。它发生在我在Wordpress中使用dbDelta函数时。我无法弄清楚,也许别人有类似的经历?我的代码:dbDelta/SQL错误,非常意外
$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结构中没有任何需要改变的东西。
它没有工作,但它改变了错误消息 ALTER TABLE wp_stocks_0 ADD PRIMARY KEY ('id'):/ –
如果你使用这里提到的if语句,那么对表结构的未来改变将不会被执行。除非你100%确定,否则将来不会修改表结构,我会避免这种构造。 –