Spec-Zone .ru
спецификации, руководства, описания, API

14.2.3.15. InnoDB Обработка ошибок

Обработка ошибок в InnoDB не всегда то же самое как определено в стандарте SQL. Согласно стандарту, любая ошибка во время SQL-оператора должна вызвать откат того оператора. InnoDB иногда откатывает только часть оператора, или целую транзакцию. Следующие элементы описывают как InnoDB выполняет обработку ошибок:

Во время неявных откатов, так же как во время выполнения явного ROLLBACK SQL-оператор, SHOW PROCESSLIST дисплеи Rolling back в State столбец для соответствующего соединения.

14.2.3.15.1. InnoDB Коды ошибки

Следующее является неисчерпывающим списком общих InnoDBСпецифичные ошибки, с которыми можно встретиться с информацией о том, почему каждый происходит и как разрешить проблему.

  • 1005 (ER_CANT_CREATE_TABLE)

    Не может составить таблицу. Если сообщение об ошибке относится к ошибке 150, табличное создание, отказавшее, потому что ограничение внешнего ключа не было правильно сформировано. Если сообщение об ошибке относится к ошибке–1, табличное создание, вероятно, отказавшее, потому что таблица включает имя столбца, которое соответствовало имя внутреннего InnoDB таблица.

  • 1016 (ER_CANT_OPEN_FILE)

    Не может найти InnoDB таблица от InnoDB файлы данных, хотя .frm файл для таблицы существует. См. Раздел 14.2.4.7, "Диагностируя InnoDB Операции Словаря данных" .

  • 1114 (ER_RECORD_FILE_FULL)

    InnoDB исчерпал свободное пространство в табличной области. Реконфигурируйте табличную область, чтобы добавить новый файл данных.

  • 1205 (ER_LOCK_WAIT_TIMEOUT)

    Блокировка ожидает истекший тайм-аут. Оператор, который ожидал слишком долго, откатывался (не вся транзакция). Можно увеличить значение innodb_lock_wait_timeout параметр конфигурации, если SQL-операторы должны ожидать дольше других транзакций, чтобы завершить, или уменьшить это, если слишком много продолжительных транзакций вызывают проблемы блокировки и сокращение параллелизма на занятой системе.

  • 1206 (ER_LOCK_TABLE_FULL)

    Общее количество блокировок превышает объем памяти InnoDB посвящает управлению блокировками. Чтобы избежать этой ошибки, увеличьте значение innodb_buffer_pool_size. В пределах отдельного приложения обходное решение может быть должно повредить большую работу в мелкие кусочки. Например, если ошибка происходит для большого INSERT, выполните несколько меньшие INSERT операции.

  • 1213 (ER_LOCK_DEADLOCK)

    Транзакция, с которой встречаются, мертвая блокировка и автоматически откатывалась так, чтобы Ваше приложение могло принять меры по ликвидации последствий. Чтобы восстановиться с этой ошибки, выполните все операции в этой транзакции снова. Мертвая блокировка происходит, когда запросы на блокировки прибывают в непоследовательный порядок между транзакциями. Транзакция, которая откатывалась, выпускала все свои блокировки, и другая транзакция может теперь получить все блокировки, которые это запрашивало. Таким образом, когда Вы запускаете повторно транзакцию, которая откатывалась, ей, возможно, придется ожидать других транзакций, чтобы завершиться, но обычно мертвая блокировка не повторяется. Если Вы встречаетесь с частыми мертвыми блокировками, сделайте последовательность из блокировки операций (LOCK TABLES, SELECT ... FOR UPDATE, и так далее) непротиворечивый между различными транзакциями или приложениями, которые испытывают проблему. См. Раздел 14.2.3.10, "Как Справиться с Мертвыми блокировками" для деталей.

  • 1216 (ER_NO_REFERENCED_ROW)

    Вы пытаетесь добавить строку, но нет никакой родительской строки, и ограничение внешнего ключа перестало работать. Добавьте родительскую строку сначала.

  • 1217 (ER_ROW_IS_REFERENCED)

    Вы пытаетесь удалить родительскую строку, у которой есть дочерние элементы, и ограничение внешнего ключа перестало работать. Удалите дочерние элементы сначала.

14.2.3.15.2. Коды ошибки Операционной системы

Чтобы напечатать значение кода ошибки операционной системы, используйте perror программу, которая идет с распределением MySQL.

  • Коды Системной ошибки Linux

    Следующая таблица обеспечивает список некоторых общих кодов системной ошибки Linux. Для более полного списка см. исходный код Linux.

    Число Макрос Описание
    1 EPERM Работа, не разрешенная
    2 ENOENT Никакой такой файл или каталог
    3 ESRCH Никакой такой процесс
    4 EINTR Прерванный системный вызов
    5 EIO Ошибка ввода-вывода
    6 ENXIO Никакое такое устройство или адрес
    7 E2BIG Список аргумента слишком долго
    8 ENOEXEC Exec форматируют ошибку
    9 EBADF Плохое число файла
    10 ECHILD Никакие дочерние процессы
    11 EAGAIN Попробовать еще раз
    12 ENOMEM Из памяти
    13 EACCES Разрешение отрицается
    14 EFAULT Плохой адрес
    15 ENOTBLK Блочное устройство требуется
    16 EBUSY Устройство или занятый ресурс
    17 EEXIST Файл существует
    18 EXDEV Ссылка перекрестного устройства
    19 ENODEV Никакое такое устройство
    20 ENOTDIR Не каталог
    21 EISDIR Каталог
    22 EINVAL Несостоятельный довод
    23 ENFILE Переполнение таблицы файлов
    24 EMFILE Слишком много открытых файлов
    25 ENOTTY Несоответствующий ioctl для устройства
    26 ETXTBSY Занятый текстовый файл
    27 EFBIG Слишком большой файл
    28 ENOSPC Никакое пространство не уехало на устройстве
    29 ESPIPE Дескриптор файла не позволяет искать
    30 EROFS Файловая система только для чтения
    31 EMLINK Слишком много ссылок
  • Коды Системной ошибки Windows

    Следующая таблица обеспечивает список некоторых общих кодов системной ошибки Windows. Для полного списка см. Microsoft Web site.

    Число Макрос Описание
    1 ERROR_INVALID_FUNCTION Неправильная функция.
    2 ERROR_FILE_NOT_FOUND Система не может счесть файл определенным.
    3 ERROR_PATH_NOT_FOUND Система не может найти путь определенным.
    4 ERROR_TOO_MANY_OPEN_FILES Система не может открыть файл.
    5 ERROR_ACCESS_DENIED Доступ лишается.
    6 ERROR_INVALID_HANDLE Дескриптор недопустим.
    7 ERROR_ARENA_TRASHED Блоки управления хранения были уничтожены.
    8 ERROR_NOT_ENOUGH_MEMORY Недостаточное хранение доступно, чтобы обработать эту команду.
    9 ERROR_INVALID_BLOCK Адрес блока управления хранения недопустим.
    10 ERROR_BAD_ENVIRONMENT Среда является неправильной.
    11 ERROR_BAD_FORMAT Попытка была предпринята, чтобы загрузить программу неправильным форматом.
    12 ERROR_INVALID_ACCESS Код доступа недопустим.
    13 ERROR_INVALID_DATA Данные недопустимы.
    14 ERROR_OUTOFMEMORY Недостаточное хранение доступно, чтобы завершить эту работу.
    15 ERROR_INVALID_DRIVE Система не может счесть диск определенным.
    16 ERROR_CURRENT_DIRECTORY Каталог не может быть удален.
    17 ERROR_NOT_SAME_DEVICE Система не может переместить файл в различный дисковод.
    18 ERROR_NO_MORE_FILES Нет больше файлов.
    19 ERROR_WRITE_PROTECT Носители защищаются от записи.
    20 ERROR_BAD_UNIT Система не может счесть устройство определенным.
    21 ERROR_NOT_READY Устройство не готово.
    22 ERROR_BAD_COMMAND Устройство не распознает команду.
    23 ERROR_CRC Ошибка данных (контроль циклическим избыточным кодом).
    24 ERROR_BAD_LENGTH Программа, данная команда, но длина команды, является неправильной.
    25 ERROR_SEEK Диск не может определить местоположение определенной области или дорожки на диске.
    26 ERROR_NOT_DOS_DISK К указанному диску или дискете нельзя получить доступ.
    27 ERROR_SECTOR_NOT_FOUND Диск не может найти сектор требуемым.
    28 ERROR_OUT_OF_PAPER Принтер испытывает недостаток бумаги.
    29 ERROR_WRITE_FAULT Система не может записать в указанное устройство.
    30 ERROR_READ_FAULT Система не может читать из указанного устройства.
    31 ERROR_GEN_FAILURE Устройство, присоединенное к системе, не функционирует.
    32 ERROR_SHARING_VIOLATION Процесс не может получить доступ к файлу, потому что это используется другим процессом.
    33 ERROR_LOCK_VIOLATION Процесс не может получить доступ к файлу, потому что другой процесс заблокировал часть файла.
    34 ERROR_WRONG_DISK Неправильная дискета находится в диске. Вставьте %2 (Серийный номер тома: %3) в диск %1.
    36 ERROR_SHARING_BUFFER_EXCEEDED Слишком много файлов открылись для того, чтобы совместно использовать.
    38 ERROR_HANDLE_EOF Достигнутый конец файла.
    39 ERROR_HANDLE_DISK_FULL Диск полон.
    87 ERROR_INVALID_PARAMETER Параметр является неправильным.
    112 ERROR_DISK_FULL Диск полон.
    123 ERROR_INVALID_NAME Имя файла, имя каталога, или синтаксис метки тома являются неправильными.
    1450 ERROR_NO_SYSTEM_RESOURCES Недостаточные системные ресурсы существуют, чтобы завершить требуемую службу.