When the version of mariadb (to MariaDB 10.7. 8) was updated, Celery began to pour out warnings when it tries to mark the task as completed.
Tell me what to do to solve it.
WARNING - py.warnings - /usr/local/lib/python3.9/site-packages/celery/app/trace.py:660: RuntimeWarning: Exception raised outside body: StatementError('(sqlalchemy.exc.OperationalError) (MySQLdb._exceptions.OperationalError) (4091, "Unknown SEQUENCE: \'task_id_sequence\'")'):
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1978, in _cursor_execute
self.dialect.do_execute(cursor, statement, parameters, context)
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute
cursor.execute(statement, parameters)
File "/usr/local/lib/python3.9/site-packages/MySQLdb/cursors.py", line 209, in execute
res = self._query(query)
File "/usr/local/lib/python3.9/site-packages/MySQLdb/cursors.py", line 315, in _query
db.query(q)
File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 239, in query
_mysql.connection.query(self, query)
MySQLdb._exceptions.OperationalError: (4091, "Unknown SEQUENCE: 'task_id_sequence'")
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1800, in _execute_context
context = constructor(
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 1026, in _init_compiled
self._process_executesingle_defaults()
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 1928, in _process_executesingle_defaults
val = self.get_insert_default(c)
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 1872, in get_insert_default
return self._exec_default(column, column.default, column.type)
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 1733, in _exec_default
return self.fire_sequence(default, type_)
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/dialects/mysql/base.py", line 1153, in fire_sequence
return self._execute_scalar(
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 1320, in _execute_scalar
conn._cursor_execute(self.cursor, stmt, parameters, context=self)
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1980, in _cursor_execute
self._handle_dbapi_exception(
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2124, in _handle_dbapi_exception
util.raise_(
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 211, in raise_
raise exception
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1978, in _cursor_execute
self.dialect.do_execute(cursor, statement, parameters, context)
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute
cursor.execute(statement, parameters)
File "/usr/local/lib/python3.9/site-packages/MySQLdb/cursors.py", line 209, in execute
res = self._query(query)
File "/usr/local/lib/python3.9/site-packages/MySQLdb/cursors.py", line 315, in _query
db.query(q)
File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 239, in query
_mysql.connection.query(self, query)
sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (4091, "Unknown SEQUENCE: 'task_id_sequence'")
[SQL: select nextval(task_id_sequence)]
(Background on this error at: https://sqlalche.me/e/14/e3q8)
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/celery/app/trace.py", line 518, in trace_task
task.backend.mark_as_done(
File "/usr/local/lib/python3.9/site-packages/celery/backends/base.py", line 162, in mark_as_done
self.store_result(task_id, result, state, request=request)
File "/usr/local/lib/python3.9/site-packages/celery/backends/base.py", line 528, in store_result
self._store_result(task_id, result, state, traceback,
File "/usr/local/lib/python3.9/site-packages/celery/backends/database/__init__.py", line 47, in _inner
return fun(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/celery/backends/database/__init__.py", line 123, in _store_result
session.flush()
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 3444, in flush
self._flush(objects)
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 3584, in _flush
transaction.rollback(_capture_exception=True)
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__
compat.raise_(
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 211, in raise_
raise exception
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 3544, in _flush
flush_context.execute()
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/unitofwork.py", line 456, in execute
rec.execute(self)
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/unitofwork.py", line 630, in execute
util.preloaded.orm_persistence.save_obj(
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/persistence.py", line 245, in save_obj
_emit_insert_statements(
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/persistence.py", line 1238, in _emit_insert_statements
result = connection._execute_20(
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1705, in _execute_20
return meth(self, args_10style, kwargs_10style, execution_options)
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/elements.py", line 334, in _execute_on_connection
return connection._execute_clauseelement(
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1572, in _execute_clauseelement
ret = self._execute_context(
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1806, in _execute_context
self._handle_dbapi_exception(
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2124, in _handle_dbapi_exception
util.raise_(
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 211, in raise_
raise exception
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1800, in _execute_context
context = constructor(
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 1026, in _init_compiled
self._process_executesingle_defaults()
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 1928, in _process_executesingle_defaults
val = self.get_insert_default(c)
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 1872, in get_insert_default
return self._exec_default(column, column.default, column.type)
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 1733, in _exec_default
return self.fire_sequence(default, type_)
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/dialects/mysql/base.py", line 1153, in fire_sequence
return self._execute_scalar(
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 1320, in _execute_scalar
conn._cursor_execute(self.cursor, stmt, parameters, context=self)
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1980, in _cursor_execute
self._handle_dbapi_exception(
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2124, in _handle_dbapi_exception
util.raise_(
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 211, in raise_
raise exception
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1978, in _cursor_execute
self.dialect.do_execute(cursor, statement, parameters, context)
File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute
cursor.execute(statement, parameters)
File "/usr/local/lib/python3.9/site-packages/MySQLdb/cursors.py", line 209, in execute
res = self._query(query)
File "/usr/local/lib/python3.9/site-packages/MySQLdb/cursors.py", line 315, in _query
db.query(q)
File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 239, in query
_mysql.connection.query(self, query)
sqlalchemy.exc.StatementError: (sqlalchemy.exc.OperationalError) (MySQLdb._exceptions.OperationalError) (4091, "Unknown SEQUENCE: 'task_id_sequence'")
[SQL: INSERT INTO celery_taskmeta (id, task_id, status, result, date_done, traceback) VALUES (%s, %s, %s, %s, %s, %s)]
[parameters: [{'task_id': '2d5c94c0-d776-48b4-8875-460f7eaf4025', 'result': None, 'traceback': None}]]
(Background on this error at: https://sqlalche.me/e/14/e3q8)
package versions:
celery - 5.2.7
sqlachemy - 1.4.46
mysqlclient - 1.4.6
pymysql - 1.0.2
Didn't find anything to do with it. I need to do something with the table to get rid of the errors.
It would appear that your database was not completely/properly updated. Something is trying to reference a sequence (for an autoincrementing column ID column, I would guess) that does not exist. The sequence is task_id_sequence
. I'm guessing your upgrade moved from a simple autoincrement to using a sequence.
I would try to create the sequence with something like:
CREATE SEQUENCE task_id_sequence START WITH <desired_start>;
where desired_start
should likely be replaced with the highest existing task_id + 1.