【问题标题】:Mysql autoincrement does not incrementMysql自增不自增
【发布时间】:2020-12-25 20:40:11
【问题描述】:

我有这张桌子:

mysql> desc Customers;

+------------+------------------+------+-----+---------+-------+
| Field      | Type             | Null | Key | Default | Extra |
+------------+------------------+------+-----+---------+-------+
| CustomerID | int(10) unsigned | NO   | PRI | NULL    |       |
| Name       | char(50)         | NO   |     | NULL    |       |
| Address    | char(100)        | NO   |     | NULL    |       |
| City       | char(30)         | NO   |     | NULL    |       |
+------------+------------------+------+-----+---------+-------+

现在,如果我想插入示例数据:

mysql> insert into Customers values(null, 'Julia Smith', '25 Oak Street', 'Airport West');
ERROR 1048 (23000): Column 'CustomerID' cannot be null

我知道我不能将 ID 设为 null,但这应该是 mysql 的工作来设置它的数字并增加它们。所以我尝试简单地不指定 id:

mysql> insert into Customers (Name, Address, City) values('Julia Smith', '25 Oak Street', 'Airport West');
Field 'CustomerID' doesn't have a default value

现在我陷入了陷阱。我不能使 id 为空(这就是说 mysql “增加我的 ID”),我不能省略它,因为没有默认值。那么我应该如何让mysql在新插入中为我处理id?

【问题讨论】:

  • 您的CREATE TABLE 查询是什么样的? MySQL 的工作是为设置为auto_increment 的字段增加数字。如果您的CustomerIDauto_increment,您会在Extra 列中看到它。
  • 您的字段没有AUTO_INCREMENT
  • 这能回答你的问题吗? Alter a MySQL column to be AUTO_INCREMENT

标签: mysql null auto-increment default-value


【解决方案1】:

主键意味着每个 CustomerID 都必须是唯一的。并且您也将其定义为 NOT NULL,因此不允许 INSERT 为 NULL

而不是>|客户 ID | int(10) 无符号 |否 |优先级 |空|

做起来

CustomerID  BIGINT AUTO_INCREMENT PRIMARY KEY

您可以毫无问题地输入您的数据

ALTER TABLE table_name MODIFY CustomerID BIGINT  AUTO_INCREMENT PRIMARY KEY

【讨论】:

    【解决方案2】:

    @米兰,

    从表中删除 CustomerID 变量。并使用以下详细信息再次添加此字段:

    字段:客户 ID, 类型:BIGINT(10), 默认值:无, auto_increment:勾选复选框

    单击“保存”按钮将这个新字段保存在表中。现在我希望它在插入新记录时会起作用。谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-03
      • 2011-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多