изменить тип двигателя с MyISAM на InnoDB - PullRequest
2 голосов
/ 24 июня 2019

Я хочу изменить тип двигателя с MyISAM на InnoDB.Что я сделал: Метод 1:

  1. Копирование структуры таблицы в новую базу данных.
  2. Изменение механизма таблиц с MyISAM на InnoDB.
  3. Экспорт данных из существующей таблицы (MyISAM).
  4. Импорт данных в новую таблицу (InnoDB).enter image description here enter image description here enter image description here

Здесь я вижу общее количество строк таблицы и размерстола.Но не вижу никаких записей при просмотре.

Метод 2:

  1. Копирование структуры таблицы в новую базу данных.

  2. Экспортданные из существующей базы данных.

  3. Импорт данных в новую базу данных.
  4. Изменение механизма таблиц с MyISAM на InnoDB.enter image description here enter image description here

Здесь я замечаю, что после изменения типа двигателя многие записи удаляются.В таблице клиентов импортированные записи 310749 после смены типа двигателя, я вижу только 243898, потери всего 66851 записей.

Что с этим не так?Любой другой способ изменить тип с MyISAM на InnoDB без потери данных.

1 Ответ

2 голосов
/ 24 июня 2019

Просто сделайте ALTER TABLE foo ENGINE=InnoDB; Но это делает это "на месте".Если вы хотите новую таблицу в другой базе данных:

CREATE TABLE db2.foo LIKE db1.foo;
ALTER TABLE  db2.foo ENGINE=InnoDB;  -- and possibly other changes, see blog below
INSERT INTO  db2.foo
    SELECT * FROM db1.foo;       -- copy data over

SELECT COUNT(*) FROM db1.foo;
SELECT COUNT(*) FROM db2.foo;    -- compare exact number of rows

Количество строк - Если вы используете SHOW TABLE STATUS, чтобы увидеть это, имейте в виду, что MyISAM предоставляет точное количество строк, но InnoDBтолько приближает число.Используйте SELECT COUNT(*) FROM foo, чтобы получить точное количество строк.

Здесь, позвольте мне выбить паутину из моего старого блога при переходе от MyISAM к InnoDB: http://mysql.rjweb.org/doc.php/myisam2innodb

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...