自动增量在phpmyadmin


96

我有一个使用PHP,MySQL和phpMyAdmin的现有数据库。

当用户成为我的网站的会员时,我需要系统使用五位数的数字为他们创建一个唯一的会员号。例如:83773。我想这就像生成一个随机密码,只不过我只想为会员提供数字。该ID号对于每个成员必须是唯一的。

我是否可以在用户表中将主键设置为auto_increment并将其设置为从10000开始,然后在每次成员注册时自动递增?

另外,主键ID号是否有最大数量限制?

这是使用主键ID号作为会员号的可靠且安全的方法吗?


3
下面的一些人回答说,主键没有上限,但是我认为上限是您选择的数据类型的最大大小...也许我是错的,但不是限制为最大值4294967295?dev.mysql.com/doc/refman/5.0/en/numeric-types.html
山姆

请选择接受的答案。我认为这是一个stackoverflow.com/a/18942684/248616
Nam G VU 2014年

Answers:


202

有可能的步骤为列启用自动递增。我猜phpMyAdmin版本是3.5.5,但不确定。

单击 > 结构选项卡>在操作下, 单击主要(设置为主要),在弹出窗口中单击更改,向左滚动并检查A_I。还要确保已为“ 默认”选择了“ 在此处输入图片说明


5
由于自动增量功能已从“操作”选项卡中删除,因此看来这是现在要实现的方式。谢谢@AmitKB。
Mike S.

2
但是,当我尝试遇到此错误时: Query error: #1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key
Yaakov Ainspan '16

该消息很清楚,您可能要尝试使用多个自动列。
阿米特·巴加特

1
遇到了类似的问题,这解决了我的问题
Callat

1
哇,好简单。为什么没人提到这个?我花了很长时间才找到这样的答案。迄今为止最好的答案。
oldboy

53

在phpMyAdmin中,导航到有问题的表,然后单击“操作”选项卡。在“表选项”下方的左侧,将允许您设置当前的AUTO_INCREMENT值。


5
当我这样做时,关于添加auto_increment的仅有的两个选项是“将表移至”或“将表复制至”。我既不想移动或复制表,而只需添加auto_increment。到底是怎么回事??我正在使用MySQL v5.6。
老男孩

@oldboy我和你一样。也许他们删除了XAMPP
PhpMyAdmin的

21

只需运行一个简单的MySQL查询并将自动增量号设置为所需的值即可。

ALTER TABLE `table_name` AUTO_INCREMENT=10000

就最大数目而言,据我所知,没有上限,也没有任何办法来限制这一数目。

将ID号设置为主键是一种非常安全的做法,通常会自动将int递增。还有一些替代方法,例如使用PHP为您生成特定格式的会员编号,然后在插入之前检查该编号是否存在,但是对于我个人而言,我会使用主要ID auto_inc值。


10
  1. 在表格的“结构”标签中
  2. 单击您想要的变量的铅笔auto_increment
  3. 在“其他”标签下,选择“自动递增”
  4. 然后转到表格的“操作”标签
  5. 在“表格选项”下->自动增量类型-> 10000

2

在phpMyAdmin中,如果您在表中将字段设置为自动递增,然后插入一行并将该字段的值设置为10000,它将从那里继续。


2

@AmitKB,您的程序正确。虽然这个错误

查询错误:#1075-错误的表格定义;只能有一个自动列,并且必须将其定义为键

可以通过以下方法解决:首先将字段标记为键(使用带有标签primary的键图标),除非您有其他键,否则可能无法使用。


自从我玩phpMyAdmin以来已经很久了,我忘记了怎么做。感谢您修复此次要问题。它为我工作。
rncrtr

0

您不能设置最大值(除了选择一个不能容纳大数字的数据类型外,没有其他类型具有您要的限制)。您可以在插入后使用LAST_INSERT_ID()进行检查,以获取新创建的成员的ID,如果太大,请在您的应用程序代码中进行处理(例如,删除并拒绝该成员)。

为什么要上限?


0

这是由于wp_termswp_termmetawp_term_taxonomy表,其中有他们所有的ID不是设置为AUTO_INCREMENT

为此,请转到phpmyadmin,在关注数据库,wp_terms表上单击,然后在结构选项卡上单击。在右侧,您将看到一个名为的选项卡A_I(AUTO_INCREMENT),选中并保存(您仅对第一个选项执行此操作,如果wp_term您选择了只为term_id)。

用同样的方法wp_termmeta,并wp_term_taxonomy会解决这个问题。


好像您认为OP正在使用WordPress,您在哪里找到了这些信息?我在问题中找不到对WP的任何引用。
劳尔·绍科

0

(a)只需单击您的数据库,选择表。点击“操作”。在“表格选项”部分下,将AUTO_INCREMENT值更改为所需的值,在这种情况下:10000单击“执行”。(请参见所附图片)

(b)或者,选择表后,可以在“ SQL”选项卡下运行SQL命令。只需键入“ ALTER TABLE table_name AUTO_INCREMENT = 10000;”。然后点击“开始”。而已!! 设置自动增量值图像(a)

设置自动增量值图像(B)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.