вопрос
Есть сайт с несколькими тысячами постов (4к). Некоторые новости удалены, добавлялись новые. Счетчик id перевалил за 15к, получается что имеем кучу пробелов по id. На основе этого сайта делается новый схожий, перегенерированы все altname, а вот с id загвоздка. Нужно пересобрать все посты сбросив счетчик id на 1 ну и дальше по порядку. Делал ли кто такое и возможно ли?
Вопрос решен. Код на Node.js ниже.
const configDB = {
connectionLimit : 100,
host : '127.0.0.1',
user : 'root',
password : '',
database : 'dbname',
charset : 'utf8mb4'
};
let newID = 20000; // стартовый ID
var mysql = require('mysql');
var pool = mysql.createPool(configDB);
pool.getConnection(function(err, connection) {
connection.query('SELECT id FROM dle_post WHERE id > 0 ORDER BY RAND()', function(err, rowsDB, fields) {
if (err) throw err;
totalservers = rowsDB.length;
console.log('Parsing started. Servers:', totalservers)
doparseData(rowsDB);
});
});
function doparseData(rows){
rows.forEach(function(item) {
newID++;
readServerData(item, 0, 0, newID);
});
}
function readServerData(rows, attempt, ROWID, newwww){
var item = rows
let id = item.id;
pool.getConnection(function(err, connection) {
connection.query( 'UPDATE dle_post SET id = '+newwww+' WHERE id = '+id+' ', function(err, rows) {
console.log("ID: "+ id + " > " + newwww);
connection.release();
});
});
pool.getConnection(function(err, connection) {
connection.query( 'UPDATE dle_post_extras_cats SET news_id = '+newwww+' WHERE news_id = '+id+' ', function(err, rows) {
if (err) {
console.log("dle_post_extras_cats ERR", err)
}
connection.release();
});
});
pool.getConnection(function(err, connection) {
connection.query( 'UPDATE dle_post_extras SET news_id = '+newwww+' WHERE news_id = '+id+' ', function(err, rows) {
if (err) {
console.log("dle_post_extras ERR", err)
}
connection.release();
});
});
}