MySQL чистые бесхозные таблицы innoDB

Вы можете попытаться выполнить итерацию строки, используя класс QXmlStreamReader, и извлечь весь текст (если ваша строка HTML гарантируется, что она хорошо сформирована XML).

Что-то вроде этого:

QXmlStreamReader xml(htmlString);
QString textString;
while (!xml.atEnd()) {
    if ( xml.readNext() == QXmlStreamReader::Characters ) {
        textString += xml.text();
    }
}

, но я не уверен, что его 100% действительное использование QXmlStreamReader API, так как я использовал его довольно давно и может что-то забыть.

0
задан user2638842 1 March 2019 в 11:37
поделиться

1 ответ

https://dev.mysql.com/doc/refman/5.6/en/innodb-trou planning-datadict.html говорит:

Файл .frm должен иметь ту же схему таблицы, что и потерянная промежуточная таблица (она должна иметь те же столбцы и индексы), и должна быть помещена в каталог базы данных потерянной промежуточной таблицы.

Если файл .frm должен иметь те же столбцы и индексы, то да, вы должны сопоставить правильный файл .frm с правильным файлом .ibd. Я не знаю, как генерируются эти временные имена файлов. Кажется, что нет никакой четкой корреляции, поэтому практически невозможно узнать, какая из них совпадает с другой.

Вы можете вывести исходную структуру таблицы из файла .frm, используя инструмент mysqlfrm в MySQL Utilities. Здесь есть хороший блог, показывающий, как это сделать: https://www.percona.com/blog/2014/01/02/recover-table-structure-frm-files-mysql-utilities/ [ 1114]

Вы должны загрузить MySQL Utilities в ближайшее время, потому что Oracle, похоже, устарел в этих инструментах. Некоторые функции этих инструментов переопределяются как часть MySQL Shell, но я ожидаю, что любые функции для файлов .frm не будут поддерживаться, потому что MySQL 8.0 больше не использует файлы .frm.

Я только что попытался использовать mysqlfrm на своем Macbook, но я получаю эту ошибку:

ERROR: Cannot find location of mysql_system_tables.sql.

Я предполагаю, что это потому, что MySQL установлен в / usr / local на моем Macbook. Возможно, это будет более успешным на сервере Linux, но у меня нет удобной установки Linux, на которой установлены MySQL Utilities.

1118 И это только половина истории. Вам все равно нужно знать структуру таблиц каждого файла .ibd, чтобы сопоставить его с правильным файлом .frm. Вы можете собрать информацию вместе из этих таблиц INFORMATION_SCHEMA:

  • INNODB_SYS_TABLES
  • INNODB_SYS_COLUMNS
  • INNODB_SYS_INDEXES

Например, Вот простая таблица в моей тестовой схеме:

CREATE TABLE `A` (
  `c1` int(11) NOT NULL DEFAULT '0',
  `c2` int(11) DEFAULT NULL,
  `c3` int(11) DEFAULT NULL,
  PRIMARY KEY (`c1`),
  KEY `c2` (`c2`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

Если я запрашиваю таблицы I_S:

mysql> select * from innodb_sys_tables where name = 'test/A';
+----------+--------+------+--------+-------+-------------+------------+---------------+
| TABLE_ID | NAME   | FLAG | N_COLS | SPACE | FILE_FORMAT | ROW_FORMAT | ZIP_PAGE_SIZE |
+----------+--------+------+--------+-------+-------------+------------+---------------+
|     2126 | test/a |    1 |      6 |  2106 | Antelope    | Compact    |             0 |
+----------+--------+------+--------+-------+-------------+------------+---------------+

mysql> select * from innodb_sys_columns where table_id = 2126;
+----------+------+-----+-------+--------+-----+
| TABLE_ID | NAME | POS | MTYPE | PRTYPE | LEN |
+----------+------+-----+-------+--------+-----+
|     2126 | c1   |   0 |     6 |   1283 |   4 |
|     2126 | c2   |   1 |     6 |   1027 |   4 |
|     2126 | c3   |   2 |     6 |   1027 |   4 |
+----------+------+-----+-------+--------+-----+

mysql> select * from innodb_sys_indexes where table_id = 2126;
+----------+---------+----------+------+----------+---------+-------+
| INDEX_ID | NAME    | TABLE_ID | TYPE | N_FIELDS | PAGE_NO | SPACE |
+----------+---------+----------+------+----------+---------+-------+
|     3875 | PRIMARY |     2126 |    3 |        1 |       3 |  2106 |
|     3876 | c2      |     2126 |    0 |        1 |       4 |  2106 |
+----------+---------+----------+------+----------+---------+-------+
0
ответ дан Bill Karwin 1 March 2019 в 11:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: