вот это увлекательный вечер у меня...
копаемся с заказчиком на тестовом поддомене, апдейтим сайт. я - файлы и прочее, он категории переименовывает и внутреннюю красоту наводит.
Вчера утром легла главная страница сайта с ошибкой 500. Естественно, первая мысль - на файлы. Но, после восстановления бекапа сайта, он не поднялся, а все исправилось после отката базы.
Заказчик был расстроен, что кучу работы переделывать.
а я думаю - почему база положила только главную, да еще и с internal server error?
в логах это:
malformed header from script. Bad header=HTTP1.0/1.1 404 Not Found: index.php
в общем, так ни к чему и не пришли, решили забить данные в базу снова.
сегодня вечером все повторяется. Владелец сайта говорит, что в этот момент работал с фильтром товаров, уронил сайт явно он, по логам вижу.
и начались пляски с бубном.
к слову, фильтр старый, левый и больше не поддерживается разработчиком, но исправно работал не один год.
Сайт снова поднялся после отката базы.
После пару часов сравнения таблиц и вычисления виновника, оказалось, что виноваты два айдишника.
есть таблицы:
category_option - id опции;
category_option_description - id опции, имя опции;
category_option_value - id значений опции, id соответствующей опции;
category_option_value_description - названия значений опции и id опции.
В category_option_value_description присутствовали несколько строк с id опций 50 и 55. только их удаляю - сайт поднимается. Добавляю - ложится. никаких спецсимволов и прочего - просто текст. изменение их названий не помогло. В других таблицах - наоборот: удаляю записи - сайт падает. Добавляю - работает. Все уперлось именно в эти два айдишника.
Из админки добавляю им значений - ложится сайт.
удаляю вообще эти опции с этими айдишниками - ложится.
Меняю что угодно на что угодно - то же самое.
В общем, пока удалось через базу отключить эти опции, отвязать их от категорий (даже отключенные показывались), вытереть им значения опций. но удалить их не могу. Есть айдишники и больше 55, т.е. дальше записи идут корректно.
Как бы можно оставить и так и стараться никогда в админке не заходить в эти две опции. Но некрасиво же..
Собственно, вопросы:
1. Почему наличие этих строк ложит главную страницу?
2. Почему вообще БД роняет сайт с ошибкой 500 Internal Server Error?
3. Что это за ошибка в логе и как это он не может найти index.php?
4. Как удалить вообще все упоминания об этих опциях, ведь если записи идут дальше по порядку, значит можно?
Меня больше волнует второй вопрос, конечно...