7.5.13 Обработка ошибок
Обработка ошибок в InnoDB не всегда соответствует спецификациям, указанным
в стандарте ANSI SQL. В соответствии со стандартом ANSI любая ошибка,
произошедшая во время выполнения оператора SQL должна привести к откату
оператора. InnoDB иногда осуществляет откат только части оператора или
целой транзакции. Особенности обработки ошибок в InnoDB указаны в
приведенном ниже списке.
-
Если закончилось свободное место в табличной области, будет выдано
сообщение об ошибке MySQL
'Table is full'
и InnoDB произведет откат
оператора SQL.
-
Взаимоблокировка транзакции или истечение времени ожидания при
блокировке приводят к откату целой транзакции в InnoDB.
-
Ошибка дублирующегося ключа приводит к откату вставки только этой
определенной строки, даже в операторе
INSERT INTO ... SELECT ...
. Этот
алгоритм мы, возможно, изменим, с тем чтобы производился откат всего
оператора SQL, если для него не указан параметр IGNORE
.
-
Ошибка
'row too long'
приводит к откату оператора SQL.
-
Большинство остальных ошибок обнаруживается на уровне кода MySQL, и
производится откат соответствующего оператора SQL.