【问题标题】:Error When Editing MySQL Field to AUTO_INCREMENT将 MySQL 字段编辑为 AUTO_INCREMENT 时出错
【发布时间】:2011-07-12 21:23:46
【问题描述】:

我正在尝试通过 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)

这是错误信息:

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

【问题讨论】:

    标签: mysql


    【解决方案1】:

    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;
    

    【讨论】:

      【解决方案2】:

      听起来你要么已经有一个自动增量字段,要么你已经在表上有一个主键。

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

      MySQL Doc on Alter table

      【讨论】:

        猜你喜欢
        • 2011-06-08
        • 2015-08-23
        • 1970-01-01
        • 2010-12-13
        • 1970-01-01
        • 1970-01-01
        • 2020-07-23
        • 2012-12-18
        • 2011-01-11
        相关资源
        最近更新 更多