mysql表auto-increment不断递增,而不是1比如41,51,61

kiayqfof  于 2021-08-13  发布在  Java
关注(0)|答案(2)|浏览(279)

即使删除了表中的所有行,也会继续。它继续从上一个插入的id添加。我用它创建了我的表

app.get('/createuserstable', (req, res) => {
    let sql = 'CREATE TABLE Users(id int AUTO_INCREMENT, name VARCHAR(255), username VARCHAR(255), email VARCHAR(255), PRIMARY KEY (id))';
    db.query(sql, (err, result) => {
        if (err) throw err;
        console.log(result);
        res.send('Users table created....');
    });
});

添加带有注册路由的用户,它以10步的速度递增

app.post('/signup', (req, res) => {
    let user = { name: req.body.name, username: req.body.username, email: req.body.email };
    db.query('INSERT INTO users SET?', user, (error, result) => {
        if (error) throw error;
        res.status(201).send(`User added with ID: ${result.insertId}`);
    });
});

这是用于10行json数据的代码

app.get('/populate', (req, res) => {
    request({
        url: "http://jsonplaceholder.typicode.com/users",
        json: true
    }, (err, resp, body) => {
        //res.send(typeof body);
        for (var i = 0; i < body.length; i++) {

            let post = { id: body[i].id, name: body[i].name, username: body[i].username, email: body[i].email };
            let sql = 'INSERT INTO users SET?';
            let query = db.query(sql, post, (err, result) => {
                if (err) throw err;
                console.log(result);
            });
        };
        res.send('users data added....')
    });

});
a0zr77ik

a0zr77ik1#

这是mysql的正常行为,而且通常是故意的,所以ID永远不会被重复使用,甚至对于已删除的记录也是如此。
如果确实需要重置自动递增计数器,可以:
一次清空整张table TRUNCATE TABLE users 删除并重新创建表 DROP TABLE users /
CREATE TABLE users ... ALTER TABLE users AUTO_INCREMENT = 1 ;
另请参见https://www.mysqltutorial.org/mysql-reset-auto-increment/

vecaoik1

vecaoik12#

您已经将auto\u increment\u increment系统变量从默认值 110 . 它的作用域是全局会话,因此您可以为当前会话设置它,也可以为整个服务器更改它(在mysql/8.0.18之前,第一个选项被限制)。
如果您根本不需要它,我建议您只需在设置文件中找到该指令并对其进行注解。

相关问题