【问题标题】:mysql ID auto increment doesn't starts from 0mysql ID自动递增不是从0开始
【发布时间】:2012-05-31 23:34:43
【问题描述】:

我有一个带有 ID 的表,该 ID 是自动增量和主键,当我第一次插入该表时,该 ID 从 0 开始,但在我从该表中删除所有值并再次插入后, ID 不是从 0 开始,而是从 ID 的最后一个值开始,请问这是怎么回事? 我可以将值重置为 0 吗?

【问题讨论】:

  • 没有错。这是预期的行为。每次骑行时,您的汽车里程表都是从 0 开始吗​​?
  • 那我该怎么办,我在我的桌子上插了300多次,当我看到老师的作业时,向他展示客户从301开始并不是一件好事,对吧?
  • 如果您从脚本中进行了插入,您可以删除表,然后重新运行脚本。如果插入是手动的,您就不想重新插入,对吗?无论如何,您删除了 300 个临时/测试客户端。如果我是你的老师,这不是问题。

标签: mysql database auto-increment


【解决方案1】:

您可以使用

截断表格
TRUNCATE `table`

截断将删除表中的所有数据。请注意,使用 TRUNCATE 也不会触发任何 DELETE 触发器,例如 DELETE

或者您可以使用重置计数

ALTER TABLE `table` AUTO_INCREMENT = 1

然而,这是预期的行为。除非桌子真的是空的,否则不要做后者。

【讨论】:

    【解决方案2】:

    要插入值为 0 的主键,首先执行以下请求:

    SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
    

    【讨论】:

      【解决方案3】:

      删除表中的所有元素不会影响主键。主键仍会从其最后一个值自动递增。

      如果要重置主键,可以尝试截断表:

      TRUNCATE TABLE yourtable;
      

      这会清除 yourtable 中的所有元素。是否重置主键取决于您的数据库。使用 Mysql 它应该可以工作,因为 Mysql 在 TRUNCATE 上删除并重新创建表。

      【讨论】:

        【解决方案4】:

        您必须使用 TRUNCATE 语句从 1 重新启动 auto_increment。 避免刹车是正常的行为。

        【讨论】:

        • 截断表 your_table_name
        • 你的意思是我的数据库会被删除吗?或者表格的值将被删除?
        • 使用 TRUNCATE 语句将删除您的表格内容。 Ben Swinburne 给出了正确答案。
        猜你喜欢
        • 2017-11-03
        • 2013-10-27
        • 1970-01-01
        • 2011-12-29
        • 2011-12-29
        • 2011-06-09
        • 1970-01-01
        • 2014-10-01
        • 2016-01-01
        相关资源
        最近更新 更多