Javascript mysql表AUTO increment以步长而不是1递增。比如41,51,61
即使删除了表中的所有行,仍将继续。它将继续从上次插入的id添加。 我用这个来创建我的表Javascript mysql表AUTO increment以步长而不是1递增。比如41,51,61,javascript,mysql,sql,node.js,Javascript,Mysql,Sql,Node.js,即使删除了表中的所有行,仍将继续。它将继续从上次插入的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, (
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....')
});
});
app.get('/populate',(req,res)=>{
请求({
url:“http://jsonplaceholder.typicode.com/users",
json:true
},(错误、响应、正文)=>{
//res.send(主体类型);
对于(变量i=0;i{
如果(错误)抛出错误;
控制台日志(结果);
});
};
res.send('已添加用户数据…')
});
});
这是MySQL的正常行为,通常是有意的,因此ID永远不会被重复使用,即使是被删除的记录
如果您确实需要重置自动递增计数器,您可以:
- 使用
截断表用户一次清空整个表
- 使用
/删除表格用户
创建表格用户…
李>ALTER TABLE users AUTO_INCREMENT=1
1
增加到10
。它的作用域是全局会话,因此您可以为当前会话设置它,也可以为整个服务器更改它(MySQL/8.0.18之前使用的第一个选项是受限的)
如果您根本不需要它,我建议您在设置文件中找到该指令并注释掉。我不认为这是关于重置计数器;OP说新的ID是相隔10个而不是连续的数字。好吧,但它以10的步数相加的问题呢。如果最后一个id为41,则添加的下一个id为51。我认为这与我如何使用json api中的for循环添加前10行有关。@ChrisG我监督了这一点。我的答案至少回答了问题的第一部分(“即使删除了表中的所有行,仍将继续。它将从最后插入的id继续添加”)。但你是对的,每连续插入10次的增量不能用我的回答来解释。但我不确定OP是否真的观察到ID增加了10,或者OP是否表示自己不准确。好的@PreshyJones,你用什么库插入(what's
db
)?好的,我不太习惯后端ATM。检查文档以确保没有由于某种原因触发的神奇的“批量插入”,但查询语法是正确的,user
对象足够简单。您确定只调用一次处理程序吗?你有没有做一些日志记录/调试?正如@ChrisG所写的,这是最可能的原因。我想你确实检查了pypMyAdmin中的实际表还是什么?您能否确认这些ID实际上是未使用的,即表中没有41到51之间的任何行?除非您无意中进行了修改,否则这可能是预期的行为。回到@lvaroGonzález的想法,显示“auto_inc%”等变量的结果是什么代码>?这可以按会话设置,因此您可以按set@@auto\u increment\u increment=1设置代码>用于新连接。但是,如果您正在与其他人一起处理更大的代码库,如果出于某种原因将其设置为10,我会首先grep,如果您不是数据库管理员,我会首先询问他/她,因为这可能是造成此步长的原因。感谢您的帮助,伙计们@SebastianB。还有克里斯。我被告知cleardb(我正在使用的数据库)按照您所说的方式配置它。