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_...
Open Source Database (RDBMS) for the Enterprise | MariaDB
MariaDB is the leading enterprise open source database with features previously only available in costly proprietary dat...
InnoDB Strict Mode
InnoD strict mode makes InnoDB more reliable.