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;
Другие вопросы по тегам