dbDelta/SQL错误,非常意外

dbDelta/SQL错误,非常意外,sql,wordpress,Sql,Wordpress,这是一个我有麻烦的错误。它发生在我在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"; 我在

这是一个我有麻烦的错误。它发生在我在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";
我在主题切换操作期间触发此代码。当我打开主题时,它似乎不会发生,只有当我切换到其他东西时(我知道,这很奇怪)。我已经阅读并尝试遵循中提到的注意事项,例如在主键和定义之间放置两个空格。我还有另外两段类似的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结构中没有需要更改的内容。

试试看--

根据我的经验,
dbDelta
甚至比法典中提到的还要麻烦。

更新
在您的编辑中,我建议您首先检查/仅在数据库尚不存在时创建数据库,您可以使用--


有点晚了-但在搜索相同错误消息的解决方案时发现了此问题-我为发现此问题的任何其他人添加了一个答案:

来自法典文件

  • 不得在字段名周围使用任何撇号或反勾号

我的问题是“create table”和表名之间有一个额外的空格

我有:

$sqlOptions = "CREATE TABLE  $options_table_name (
在我需要的地方:

$sqlOptions = "CREATE TABLE $options_table_name (

Picky函数不起作用,但它更改了错误消息以更改表wp\u stocks\u 0 ADD PRIMARY KEY(
id
):/。除非你百分之百确定以后永远不会修改表结构,否则我会避免这种构造。我的表名后面缺少空格。确实很挑剔。
$sqlOptions = "CREATE TABLE  $options_table_name (
$sqlOptions = "CREATE TABLE $options_table_name (