首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP MYSQL将自动增量设置为MAX +1

问PHP MYSQL将自动增量设置为MAX +1
EN

Stack Overflow用户
提问于 2013-09-05 20:44:17
回答 3查看 7.2K关注 0票数 2

我有一个PHP文件,它使用函数将CSV文件中的数据插入MYSQL。

如果CSV数据是重复的,则不会插入它,因为DB表索引规则(唯一)。

代码语言:javascript
复制
$sql = "LOAD DATA LOW_PRIORITY LOCAL INFILE 
       '" . $makes_file . "' IGNORE 
       INTO TABLE make 
       FIELDS TERMINATED BY ',' 
       LINES TERMINATED BY '\n' (make, img_url)";

$link->query($sql) or die(mysqli_error($link));

由于某些原因,表的自动增量在此过程中不正确。

所以我使用了下面的代码来纠正这个问题。

代码语言:javascript
复制
$get_max = $link->query("SELECT max(id) as max FROM `make` LIMIT 1");
while ($r = $get_max->fetch_assoc()) {
    $link->query("ALTER TABLE  `make` AUTO_INCREMENT = " . ($r['max'] + 1)) or 
    die(mysqli_error($link));
}

所以如果有人知道:

  1. 为什么自动增量从加载数据sql或
  2. 如果有更漂亮的方法将自动增量设置为max(id) +1

谢谢

EN

回答 3

Stack Overflow用户

发布于 2015-04-23 04:20:03

对于MyISAM表,您只需将AUTO_INCREMENT设置为0,MySQL将使用当前最大值加一个。

代码语言:javascript
复制
$link->query('ALTER TABLE make AUTO_INCREMENT = 0');

从医生那里

不能将计数器重置为小于或等于已使用的任何值。对于MyISAM,如果该值小于或等于AUTO_INCREMENT列中当前的最大值,则该值将重置为当前最大值加1。

票数 4
EN

Stack Overflow用户

发布于 2013-09-05 20:56:53

这个答案是一种更漂亮的方法,可以将自动增量设置为max(id) +1,只需使用一个查询即可:

代码语言:javascript
复制
$link->query("ALTER TABLE  `make` AUTO_INCREMENT = ( SELECT max(id)+1 FROM `make` LIMIT 1 )" );

但是,如果AUTO_INCREMENT是unique,则第一个解决方案应该有效,请检查您的数据库

票数 1
EN

Stack Overflow用户

发布于 2022-03-08 13:40:30

手动检查数据库中的最后一个id并获取它。

然后插入新记录并将id设置为最后一个id加上例如3或4。

示例

如果您上一次使用id是5000,插入新记录并将id设置为5003,那么自动增量将从5003再次工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18645617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档