Задавайте вопросы, мы ответим
Вы не зашли.
Обновил сервер с 5.0.45 до 5.1.50 (win64). После установки запускаю утилиту
>mysql_upgrade -u root -ppass
В процессе работы тулза утыкается в некоторые таблицы и замирает. Ничего особенного в этих таблицах нет вроде, например вот сейчас вздернулся на вордпрессовской `wp_options`. Вешается навсегда, самое неприятное, что если грохнуть процесс, то он переходит вот в такое состояние:
4886 root 127.0.0.1:2415 test2 Killed 14943 Repair with 2 threads REPAIR TABLE `wp`.`wp_options`
Соответственно таблица залочена насмерть.
Помогает только ребут сервера. Если запустить mysql_upgrade еще раз после ребута - ситуация повторяется. Что с этим можно поделать?
(одно решение - сдампить таблицу и создать заново, но их у меня ~50000 и с ними работают)
Неактивен
Отредактировать mysql_upgrade и закомментировать запуск mysql_check
Неактивен
Ага, учитывая что в mysql_check весь смысл этой тулзы, то можно и просто не запускать
Ну а серьезно, чего делать то с этим? В лог валятся ошибки про таблицы "Invalid (old?) table or database name"
Неактивен
Нет, конечно. Смысл этой утилиты — в том, чтобы обновить то, что не обновлено.
Как правило обновляются столбцы таблиц в базе MySQL. А вот формат данных
MyISAM не обновлялся сто лет — Вы просто делаете лишний check. Но если хотите
делать check — тогда Вам стоит его дождаться, да.
Неактивен
Но ведь check там не простой - CHECK TABLE tbl FOR UPGRADE - он наверно тоже какие то специфические вещи делает?
Но тогда просто проблема в другом - почему вешается check? и что с этим делать. Таблица, на которой он вешается - 500 килобайт, думает он над ней много часов, и явно не собирается заканчивать.
Кстати совет отредактировать mysql_upgrade.exe прикольный
Неактивен
Хм. И правда бинарник
А просто прибить check во время работы?
Неактивен
Так я же написал еще в первом сообщении. Тред переходит в состояние Killed и в таком сотоянии остается висеть навечно, таблица при этом блокируется полностью. Помогает только рестарт mysql.
Неактивен