Сортирует ключи рекурсивно, сохраняя ссылки.
function sortKeys(o){
if(o && o.constructor === Array)
o.forEach(i=>sortKeys(i));
else if(o && o.constructor === Object)
Object.entries(o).sort((a,b)=>a[0]>b[0]?1:-1).forEach(e=>{
sortKeys(e[1]);
delete o[e[0]];
o[e[0]] = e[1];
});
}
Пример:
let x = {d:3, c:{g:20, a:[3,2,{s:200, a:100}]}, a:1};
let y = x.c;
let z = x.c.a[2];
sortKeys(x);
console.log(x); // {a: 1, c: {a: [3, 2, {a: 1, s: 2}], g: 2}, d: 3}
console.log(y); // {a: [3, 2, {a: 100, s: 200}}, g: 20}
console.log(z); // {a: 100, s: 200}
Может быть несколько причин, таблицы повреждаются, это обсуждено подробно в руководстве.
Для борьбы с ним следующие вещи работают лучше всего:
Обычно, это происходит, когда база данных не закрывается правильно, как системный катастрофический отказ или аппаратная проблема.
Это могли быть много вещей, но MySQL Performance Blog упоминает плохую память, ОС или ошибки MySQL, которые могли вызвать скрытое повреждение. Кроме того, это и другая статья упоминают несколько вещей иметь в виду при выполнении восстановления катастрофического отказа.
Раньше я получал ошибки от mysql, как и вы.
Я решил свои проблемы таким образом
Эти два шага спасли меня. Надеюсь, они вам тоже очень помогут.