Spec-Zone .ru
спецификации, руководства, описания, API
|
Этот раздел описывает, как восстановить таблицу, после изменений к MySQL такой как, как обрабатываются типы
данных или наборы символов. Например, ошибка в сопоставлении, возможно, была исправлена, требуя, чтобы таблица
восстановила, чтобы обновить индексирование для символьных столбцов, которые используют сопоставление. (Для
примеров см. Раздел 2.11.3, "Проверяя
Или Таблицы, или Индексирует, Должен быть Восстановлен".) Вы, возможно, также должны были бы
восстановить или обновить таблицу, столь же обозначенную табличной работой проверки, такой как выполняемое CHECK TABLE
, mysqlcheck, или mysql_upgrade.
Методы для того, чтобы восстановить таблицу включают дамп и перезагрузку этого, или использование ALTER
TABLE
или REPAIR TABLE
.
Если Вы восстанавливаете таблицы, потому что различная версия MySQL не будет обрабатывать их после двоичного (оперативного) обновления или упадка, следует использовать метод дампа-и-перезагрузки. Выведите таблицы прежде, чем обновить или понизить использование Вашей оригинальной версии MySQL. Затем перезагрузите таблицы после обновления или понижения.
Если Вы используете метод дампа-и-перезагрузки восстановления таблиц только с целью восстановления, индексирует, можно выполнить дамп или прежде или после обновления или понижения. Перезагрузка все еще должна быть сделана позже.
Чтобы восстановить таблицу, выводя и перезагружая это, используйте mysqldump, чтобы создать файл дампа и mysql, чтобы перезагрузить файл:
shell>mysqldump
shell>db_name
t1 > dump.sqlmysql
db_name
< dump.sql
Чтобы восстановить все таблицы в единственной базе данных, определите имя базы данных без любого после имени таблицы:
shell>mysqldump
shell>db_name
> dump.sqlmysql
db_name
< dump.sql
Чтобы восстановить все таблицы во всех базах данных, используйте --all-databases
опция:
shell>mysqldump --all-databases > dump.sql
shell>mysql < dump.sql
Восстановить таблицу с ALTER TABLE
,
используйте "нулевое" изменение; то есть, ALTER TABLE
оператор, который "изменяет"
таблицу, чтобы использовать механизм хранения, который это уже имеет. Например, если t1
a MyISAM
таблица, используйте этот оператор:
mysql> ALTER TABLE t1 ENGINE =
MyISAM;
Если Вы не уверены который механизм хранения определить в ALTER TABLE
оператор, использовать SHOW CREATE TABLE
вывести на экран табличное определение.
Если следует восстановить таблицу, потому что табличная работа проверки указывает, что таблица повреждена или
нуждается в обновлении, можно использовать REPAIR
TABLE
если тот оператор поддерживает механизм хранения таблицы. Например, чтобы восстановить a
MyISAM
таблица, используйте этот оператор:
mysql> REPAIR TABLE t1;
Для механизмов хранения такой как InnoDB
это REPAIR TABLE
не поддерживает, используют mysqldump, чтобы создать файл дампа и mysql, чтобы перезагрузить файл, как описано ранее.
Для того, специфических особенностей, о который механизмы хранения REPAIR TABLE
поддерживает, см. Раздел
13.7.2.5,"REPAIR TABLE
Синтаксис".
mysqlcheck - восстановление обеспечивает доступ командной строки
к REPAIR TABLE
оператор. Это может быть более удобным средством восстановления
таблиц, потому что можно использовать --databases
или --all-databases
опция, чтобы восстановить все таблицы в определенных базах
данных или всех базах данных, соответственно:
shell>mysqlcheck --repair --databases
shell>db_name
...mysqlcheck --repair --all-databases
Для несовместимостей, представленных в MySQL 5.1.24 фиксацией для Ошибки #27877, который исправлял utf8_general_ci
и ucs2_general_ci
сопоставления,
обходное решение реализуется с MySQL 5.1.62, 5.5.21, и 5.6.5. Обновите до одной из тех версий, затем
преобразуйте каждую таблицу, на которую влияют, используя один из следующих методов. В каждом случае, обходное
решение, изменяющее столбцы, на которые влияют, чтобы использовать utf8_general_mysql500_ci
и ucs2_general_mysql500_ci
сопоставления, которые сохраняют исходное пред5.1.24
упорядочивание utf8_general_ci
и ucs2_general_ci
.
Чтобы преобразовать таблицу, на которую влияют, после двоичного обновления что
листы табличные файлы на месте, измените таблицу, чтобы использовать новое сопоставление. Предположите
что таблица t1
содержит один или более проблематичный utf8
столбцы. Чтобы преобразовать таблицу на табличном уровне,
используйте оператор как это:
ALTER TABLE t1CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_mysql500_ci;
Чтобы применить изменение на специфичной для столбца основе, используйте оператор как это
(убедиться, что повторил определение столбца как первоначально определено за исключением COLLATE
пункт):
ALTER TABLE t1MODIFY c1 CHAR(N) CHARACTER SET utf8 COLLATE utf8_general_mysql500_ci;
Чтобы обновить таблицу, используя дамп и процедуру перезагрузки, выведите таблицу,
используя mysqldump,
измените CREATE TABLE
оператор в файле дампа, чтобы использовать новое
сопоставление, и перезагрузить таблицу.
После произведения соответствующих изменений, CHECK
TABLE
должна сообщить никакая ошибка.