MySQL 报告主键,但无法将其从表中删除

Cle*_*ter 4 php mysql

我正在更新数据库中的一些表,我使用以下代码来检查主键并将其删除,然后添加新的主键。

if(strpos($value,'PRIMARY') !== false)
{
    $dropit = "DROP PRIMARY KEY ,";
    $query = "ALTER TABLE `".$tablename."` ".$dropit." ADD PRIMARY KEY (`".$name."`);" ;
}
Run Code Online (Sandbox Code Playgroud)

当我运行时,我收到此错误:

1091 - 无法删除“主要”;检查列/键是否存在 SQL=ALTER TABLE `my_table` DROP PRIMARY KEY , ADD PRIMARY KEY (`id`);

经过一些谷歌搜索后,我看到这个问题出现在 MySQL 错误报告表中,比如 2006 年,所以我认为它现在已经解决了。MySQL错误我的My SQL版本是5.1.44所以不是超级旧...似乎一个列可以看起来像主键但不是主键...所以我想知道是否有更好的方法来检查在我尝试删除以防止错误之前。

我也在一些 Drupal 论坛上看到过这个问题,但没有给出如何解决的线索......

如果您认为更多周围的代码将有帮助,请告诉我,我会添加。

nic*_*ckb 6

它正在尝试删除名为 PRIMARY 的密钥。虽然我不确定为什么它不起作用(正如文档清楚地显示的DROP PRIMARY KEY那样),但您可以尝试将 SQL 更改为以下内容:

ALTER TABLE `my_table` DROP KEY `key_name`, ADD PRIMARY KEY (`id`);
Run Code Online (Sandbox Code Playgroud)