MySQL:START TRANSACTION - UPDATE - ROLLBACK: нетранзакционные таблицы
Я пытаюсь выполнить эти запросы, чтобы выполнить ROLLBACK, и я не слишком уверен, что я делаю неправильно, но я получаю предупреждение:
Некоторые нетранзакционные измененные таблицы нельзя откатить.
После небольшого исследования я обнаружил, что наиболее вероятной причиной этого сообщения является ложное предположение, что таблица является транзакционной, но на самом деле это не так. Как определить, какие таблицы являются транзакционными?
Я должен предположить, что база данных, которую я использую, использует откат, потому что он находится в назначении, которое я дал для класса, который требует от нас использования базы данных.
1 ответ
Таблицы, использующие механизм хранения InnoDB, или таблицы, использующие механизм хранения кластера NDB, поддерживают транзакции; другие двигатели этого не делают. (Где-то в документации есть таблица сравнения, но я не могу сейчас ее найти.)
Чтобы проверить конкретную таблицу, используйте
SHOW CREATE TABLE <tablename>;
который покажет вам полный CREATE TABLE
заявление, в том числе ENGINE
пункт.
Чтобы проверить, какие движки установлены в вашей базе данных, используйте
SHOW ENGINES;
Если у вас установлен InnoDB, но это не движок по умолчанию, вы можете указать ENGINE=InnoDB
в CREATE TABLE
заявление или изменить его позже с
ALTER TABLE <tablename> ENGINE = InnoDB;