boc*_*phy 3 php mysql sql csv auto-increment
我有一个 PHP 文件,它使用 LOAD DATA INFILE sql 函数将 CSV 文件中的数据插入到 MYSQL DB 中。
如果 CSV 数据重复,则由于数据库表索引规则(唯一),不会插入该数据。
$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));
Run Code Online (Sandbox Code Playgroud)
由于某种原因,此过程中表的自动增量不正确。
所以我使用下面的代码来纠正这个问题。
$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));
}
Run Code Online (Sandbox Code Playgroud)
所以如果有人知道:
谢谢
对于 MyISAM 表,您只需将 AUTO_INCRMENT 设置为 0,MySQL 将使用当前最大值加一。
$link->query('ALTER TABLE make AUTO_INCREMENT = 0');
Run Code Online (Sandbox Code Playgroud)
来自文档:
您无法将计数器重置为小于或等于已使用的值。对于MyISAM,如果该值小于或等于AUTO_INCREMENT 列中当前的最大值,则该值将重置为当前最大值加一。