将MySQL字段编辑为AUTO_INCREMENT时出错

时间:2011-07-12 21:23:47

标签: mysql

我正在尝试通过PHP将MySQL中的字段编辑为NOT NULL和AUTO_INCREMENT。我已经尝试了以下路线来做到这一点,但我一直在收到错误。知道为什么吗?

$con = mysql_connect("host", "user", "pass");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("database_name", $con);

$int = "ALTER TABLE `table_name` CHANGE `column_name` `column_name` INT(11) NOT NULL AUTO_INCREMENT";

if (!mysql_query($int,$con))
  {
  die('Heres Your Error: ' . mysql_error());
  }

mysql_close($con)

这是错误消息:

  

表定义不正确;只能有一个自动列,必须将其定义为键

2 个答案:

答案 0 :(得分:3)

在这种情况下,MySQL的问题是“鸡与鸡蛋”的情况。

如果表中已有AUTO_INCREMENT列,则错误消息的前半部分适用于只有一列可以是AUTO_INCREMENT。

使用AUTO_INCREMENT创建表必须与定义PRIMARY KEY一起完成。

如果表没有AUTO_INCREMENT列,则错误消息的后半部分适用于创建AUTO_INCREMENT必须与PRIMARY KEY一起完成。

试试这个:

ALTER TABLE `table_name` CHANGE `column_name` `column_name` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY;

答案 1 :(得分:0)

听起来你已经有了一个自动增量字段,或者你已经有了一个主键。

如果您希望新列成为自动增量,则必须删除现有密钥以将新的自动增量字段添加到表中

MySQL Doc on Alter table