
docker環境において、基本的にはMySQLよりもMariaDBを指定することが多いのですが、そこもあまり深く考えずにタグを :latest で設定していたところ掲題のようなエラーが発生し、MariaDBが起動しないことがありました。
原因?
どうやら参考した記事によると、MariaDB 10.6からは innodb_read_only_compressed オプションが既定で有効になったことのためのようです。
対応
docker環境においては、command にて以下のコマンドを追加し、それぞれのオプションを無効化することで今回の問題に対応できるそうです。
--innodb_strict_mode=OFF--innodb_read_only_compressed=OFF
mysql:
image: mariadb
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: db
MYSQL_PASSWORD: db
MYSQL_DATABASE: db
command:
- "--character-set-server=utf8mb4"
- "--collation-server=utf8mb4_unicode_ci"
- "--innodb_strict_mode=OFF"
- "--innodb_read_only_compressed=OFF"
volumes:
- ./db:/var/lib/mysql
MariaDB 10.6未満からのバージョンアップを計画している人はご注意ください。
参考

InnoDB refuses to write tables with ROW_FORMAT=COMPRESSED or KEY_BLOCK_SIZE. と言われデータベースに書く込めないときの解決法 | ゆっくり遅報
mariadb10.6から「innodb_read_only_compressed」が追加されこれがデフォルトでONになっています。 この場合これと「innodb_strict_...
MariaDB Documentation
InnoDB Strict Mode | Server | MariaDB Documentation
InnoDB Strict Mode enforces stricter SQL compliance, returning errors instead of warnings for invalid CREATE TABLE optio...

