Справочник · ошибки Python
OperationalError
Ошибка базы данных SQLite: нет такой таблицы или столбца, или в SQL-запросе опечатка.
Python пишет ошибку в последней строке сообщения: сначала название, после двоеточия — подробности. Найди своё сообщение ниже — рядом объяснение простыми словами и что исправить.
База занята
OperationalError: database is locked
- Что случилось
- Другое подключение начало запись в базу и не закончило её.
- Почему так бывает
- Изменения не сохранены командой commit, и подключение держит базу занятой.
- Как исправить
- Вызови conn.commit() после INSERT, UPDATE и DELETE.
Разбираем в уроке 15.5 «API и база данных».
Нет такой таблицы
OperationalError: no such table: pets
- Что случилось
- В базе нет таблицы
pets. - Почему так бывает
- Название таблицы написано с ошибкой, или такую таблицу ещё не создали.
- Как исправить
- Посмотри список таблиц и сверь название буква в букву.
Разбираем в уроке 14.1 «Таблица».
Нет такого столбца
OperationalError: no such column: nmae
- Что случилось
- В таблице нет столбца
nmae. - Почему так бывает
- Название столбца написано с ошибкой. Ещё так бывает, если текст записали в двойных кавычках: SQL принимает их за название столбца.
- Как исправить
- Сверь название со списком столбцов. Текст в SQL берут в одинарные кавычки: 'кошка'.
Разбираем в уроке 14.1 «Таблица».
SQL не понял запрос
OperationalError: near "print": syntax error
- Что случилось
- SQL не понял запись возле слова «
print». - Почему так бывает
- Часто пропущена запятая или скобка, слово написано с ошибкой, или слова стоят в неверном порядке. Ещё бывает, что между запросами забыли точку с запятой.
- Как исправить
- Прочитай запрос слева направо до слова «
print». Проверь запятые, скобки и порядок слов.
Разбираем в уроке 14.1 «Таблица».
Запрос не закончен
OperationalError: incomplete input
- Что случилось
- Запрос оборвался на середине.
- Почему так бывает
- Не закрыта скобка или кавычка.
- Как исправить
- Проверь, что у каждой скобки и кавычки есть пара.
Разбираем в уроке 14.1 «Таблица».
Такая таблица уже есть
OperationalError: table pets already exists
- Что случилось
- Таблица
petsуже есть в базе. - Почему так бывает
- Создать таблицу с тем же названием второй раз нельзя.
- Как исправить
- Выбери другое название или не создавай таблицу заново.
Разбираем в уроке 14.1 «Таблица».
Значений не столько, сколько столбцов
OperationalError: table pets has 3 columns but 2 values were supplied
- Что случилось
- В таблице
3столбцов, а в команде2значений. - Почему так бывает
- Если названия столбцов не перечислены, значение нужно дать для каждого столбца.
- Как исправить
- Перечисли нужные столбцы после названия таблицы или дай значения для всех.
Разбираем в уроке 14.3 «Меняем: INSERT, UPDATE, DELETE».
Значений не столько, сколько столбцов
OperationalError: 2 values for 3 columns
- Что случилось
- Столбцов
3, а значений2. - Почему так бывает
- Сколько столбцов перечислено, столько и значений должно быть.
- Как исправить
- Сверь число названий столбцов и число значений в скобках.
Разбираем в уроке 14.3 «Меняем: INSERT, UPDATE, DELETE».
Непонятно, чей столбец
OperationalError: ambiguous column name: id
- Что случилось
- Столбец
idесть в обеих таблицах, и SQL не знает, какой взять. - Почему так бывает
- У двух таблиц бывают столбцы с одинаковым названием.
- Как исправить
- Напиши название таблицы и точку перед столбцом, например pets.id.
Разбираем в уроке 14.4 «Связи между таблицами».
Нет такой функции
OperationalError: no such function: AVERAGE
- Что случилось
- SQL не знает функции
AVERAGE. - Почему так бывает
- Название функции написано с ошибкой.
- Как исправить
- Проверь название: COUNT, SUM, AVG, MIN или MAX.
Разбираем в уроке 14.4 «Связи между таблицами».
Другие ошибки
SyntaxErrorNameErrorAttributeErrorTypeErrorIndentationErrorTabErrorValueErrorZeroDivisionErrorIndexErrorKeyErrorUnboundLocalErrorRecursionErrorFileNotFoundErrorUnsupportedOperationUnicodeDecodeErrorModuleNotFoundErrorJSONDecodeErrorEOFErrorAssertionErrorValidationErrorMissingSchemaConnectionErrorReadTimeoutHTTPErrorIntegrityErrorProgrammingErrorNotImplementedError