for the context, i am using the same mysql container version (mariadb:10.11) as stated in the repo, and the my.cnf file is also exactly the same.
Today i did the following commands:
docker compose pull ; docker compose down ; docker compose up -d
however this resulted in the following mysql errors:
mysql-mailcow-1 | 2026-06-09 16:33:09 0x77cee6fff640 InnoDB: Assertion failure in file ./storage/innobase/trx/trx0purge.cc line 901
mysql-mailcow-1 | InnoDB: Failing assertion: tail.trx_no <= last_trx_no
mysql-mailcow-1 | InnoDB: We intentionally generate a memory trap.
mysql-mailcow-1 | InnoDB: Submit a detailed bug report to https://jira.mariadb.org/
mysql-mailcow-1 | InnoDB: If you get repeated assertion failures or crashes, even
mysql-mailcow-1 | InnoDB: immediately after the mariadbd startup, there may be
mysql-mailcow-1 | InnoDB: corruption in the InnoDB tablespace. Please refer to
mysql-mailcow-1 | InnoDB: https://mariadb.com/kb/en/library/innodb-recovery-modes/
mysql-mailcow-1 | InnoDB: about forcing recovery.
mysql-mailcow-1 | 260609 16:33:09 [ERROR] mariadbd got signal 6 ;
this error keeps happening and crashing the mysql container non-stop by default, and it keeps occuring every 15 or so minutes instead when i add the following line in the docker-compose.yaml file for the mysql-mailcow container:
command: ["--innodb-force-recovery=3"]
after a bit of digging i found out that the mailcow.sasl_log table was corrupted:
MariaDB [mailcow]> CHECK TABLE mailcow.sasl_log EXTENDED;
+------------------+-------+----------+-----------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+------------------+-------+----------+-----------------------------------------------+
| mailcow.sasl_log | check | Warning | InnoDB: Index datetime is marked as corrupted |
| mailcow.sasl_log | check | error | Corrupt |
+------------------+-------+----------+-----------------------------------------------+
2 rows in set (0.032 sec)
MariaDB [mailcow]> SELECT COUNT(*) FROM mailcow.sasl_log;
ERROR 1712 (HY000): Index sasl_log is corrupted
What is the correct way to fix this error ? recreating the table ? i tried truncating it but it exceeds the lock wait timeout:
MariaDB [mailcow]> TRUNCATE TABLE mailcow.sasl_log;
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction