我有一个PHP文件,它使用函数将CSV文件中的数据插入MYSQL。
如果CSV数据是重复的,则不会插入它,因为DB表索引规则(唯一)。
$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));由于某些原因,表的自动增量在此过程中不正确。
所以我使用了下面的代码来纠正这个问题。
$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));
}所以如果有人知道:
谢谢
发布于 2015-04-23 04:20:03
对于MyISAM表,您只需将AUTO_INCREMENT设置为0,MySQL将使用当前最大值加一个。
$link->query('ALTER TABLE make AUTO_INCREMENT = 0');不能将计数器重置为小于或等于已使用的任何值。对于MyISAM,如果该值小于或等于AUTO_INCREMENT列中当前的最大值,则该值将重置为当前最大值加1。
发布于 2013-09-05 20:56:53
这个答案是一种更漂亮的方法,可以将自动增量设置为max(id) +1,只需使用一个查询即可:
$link->query("ALTER TABLE `make` AUTO_INCREMENT = ( SELECT max(id)+1 FROM `make` LIMIT 1 )" );但是,如果AUTO_INCREMENT是unique,则第一个解决方案应该有效,请检查您的数据库
发布于 2022-03-08 13:40:30
手动检查数据库中的最后一个id并获取它。
然后插入新记录并将id设置为最后一个id加上例如3或4。
示例
如果您上一次使用id是5000,插入新记录并将id设置为5003,那么自动增量将从5003再次工作。
https://stackoverflow.com/questions/18645617
复制相似问题