【问题标题】:Mysql - how to set auto-increment to start from zeroMysql - 如何设置自动增量从零开始
【发布时间】:2013-04-20 09:23:21
【问题描述】:

我只想让我的mysql表id(主键)从0开始..

正如我所见,我使用了 ALTER TABLE yourtable AUTO_INCREMENT =0 但它从 1 开始......我需要做什么?

编辑1

我还使用 truncate 选项清空了我的表

【问题讨论】:

  • 为什么?不要试图影响AUTO_INCREMENT 的值。把它留给数据库来做。反正是随意的。如果你想添加某种你想分配给自己的 ID,你不应该把它设为AUTO_INCREMENT
  • @BartFriederichs 实际上它必须对 php 中的数组做一些工作所以我需要它..猜想我将从 1 开始并在我的数组的 php 代码中递减它..
  • @BartFriederichs 当我尝试访问它时它可以正常工作吗?我的意思是索引 0??
  • @user2234992 如果要从 db 填充数组,请使用关联数组,因为它们速度更快且占用内存更少。如果你从数据库中删除几行,那么索引数组仍然会占用内存,即使它们的值没有被赋值

标签: mysql primary-key


【解决方案1】:
SET [GLOBAL|SESSION] sql_mode='NO_AUTO_VALUE_ON_ZERO'

NO_AUTO_VALUE_ON_ZERO 会影响 AUTO_INCREMENT 列的处理。通常,您通过在其中插入 NULL 或 0 来为该列生成下一个序列号。 NO_AUTO_VALUE_ON_ZERO 为 0 抑制此行为,以便只有 NULL 生成下一个序列号。

如果 0 已存储在表的 AUTO_INCREMENT 列中,则此模式很有用。 (顺便说一下,不推荐存储 0。)

Reference

Reference 2

【讨论】:

  • wtf?为什么不是零。这是一个完全正常的数字。
  • @Fuser97381:是的,这是一个数字,但它让生活变得更加艰难。在许多编程语言中,当您使用布尔函数并将 0 作为参数传递时,您必须注意。例如,在 php 中,某些函数将 0 解释为 FALSE。如果你从数据库中得到一个 id,将它存储在变量 $id 中,然后你使用:empty($id),来检查 $id 是否是一个有效的 id,当 $id = 0 时该函数返回 FALSE。
【解决方案2】:

您不能将其强制为零。这受 auto_increment_offset 服务器变量的限制。默认值为 1,范围为 [1 .. 65535]。

更多信息:auto_increment_offsetHow to set AUTO_INCREMENT step

【讨论】:

  • 嗨德瓦特。第二个链接失效(现在链接重定向到广告)
猜你喜欢
  • 2017-09-16
  • 2016-02-02
  • 2011-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-18
  • 2011-03-06
相关资源
最近更新 更多