bmmshayan Опубликовано 1 января, 2011 Жалоба Поделиться Опубликовано 1 января, 2011 (изменено) Здравствуйте! Есть у меня сайт, работает уже несколько лет, и соответственно БД уже большая. Случилась такая проблема: Есть таблица, назовем её `table1` у неё есть данные: -------------- | id | a | b |... | 1 | 1 | 9 | | 2 | 2 | 7 | | 3 | 2 | 6 | | 4 | 3 | 2 | | 5 | 2 | 1 | ............ в реальной таблице 350 000 строк (в принципе это не много) и 3 индекса сегодня обнаружил что при запросе: UPDATE `table1` SET `b`='1' WHERE `a`=2 MySQL ведет себя некорректно, т.е. обновляет только первую попавшуюся строку и все, а например в приведенном мною примере он должен обновить сразу 3 строки. Мне коллеги подсказали что такое бывает из-за индексов, порекомендовали - если есть индексы в таблице кроме PRIMARY, чтобы я их удалил и потом их же заново создал. Я так и сделал и у меня все заработало как и прежде, но это меня ужаснуло! Как так? Никакой защиты? Я спать спокойно не смогу если буду знать что у меня таблица в любой момент "захочет по прикалываться" и перестанет нормально выполнять запросы. Подскажите, почему такое происходит? Как защитится от этого? Изменено 1 января, 2011 пользователем bmmshayan Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Darhazer Опубликовано 2 января, 2011 Жалоба Поделиться Опубликовано 2 января, 2011 Можно запустить крона чтоб переодически проверял и изправлял таблиц. Если у вас MyISAM читайте здесь: http://dev.mysql.com/doc/refman/5.1/en/myisam-maintenance-schedule.html Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.