Home > Linux > auto_increment поле в InnoDB таблица след OPTIMIZE

auto_increment поле в InnoDB таблица след OPTIMIZE

Преди около седмица се изправих пред поредния “невъзможен” проблем. Незнайно как, auto_increment полето в една от таблиците се нулираше само. По първи впечатления това се случваше на произволен интервал от време, но по-късно разбрах, че причината е в един определен cron.
Въпросният cron има за цел да оптимизира и подреди базата данни. Общо взето може да се каже, че е garbage collector за доста от нещата в базата. След съответните зачистващи процедури пуснах и процедура за оптимизиране на таблиците, а именно “OPTIMIZE table X”, където Х е името на всяка една от нужните таблици.
За моя голяма изненада, след 3 дни проблеми и опити да реша проблема, се оказа, че когато правите OPTIMIZE на InnoDB таблица, auto_increment полето в нея се нулира. За справка можете да погледнете този bug report в MySQL Bugs.

Categories: Linux Tags:
Вижте всички статии от
Technology lover
Този автор е написал 156 статии

  • Аз си използвам InnoDB редобно, защото съм му голям фен. И също толкова редовно след всяка по-сериозна заявка, примерно масово триене или добавяне, оптимизирам таблицата с OPTIMIZE. Досега не ми се е случвал този проблем. При мен ще е просто катастрофално, ако се случи.

    Между другото, при InnoDB мисля че таблиците се оптимизират автоматично и няма нужда от OPTIMIZE.

  • Благомир Иванов

    При мен проблема се появи, защото въпросните auto_increment ключове са ми много важни за връзката с още няколко таблици, от които вадя много полезна статистика.
    Проблема е с MySQL server 5.0.83. Ти на коя версия си?