Nextcloud 4047 InnoDB refuses to write tables with ROW_FORMAT=COMPRESSED or KEY_BLOCK_SIZE beheben

English Deutsch

Problem:

Beim Versuch, maintenance:repair auf der Nextcloud-Instanz auszuführen, z.B. während eines utf8mb4-Upgrades, erscheint eine Fehlermeldung wie

innodb_error.txt
ERROR: An exception occurred while executing a query: SQLSTATE[HY000]: General error: 4047 InnoDB refuses to write tables with ROW_FORMAT=COMPRESSED or KEY_BLOCK_SIZE.

Lösung

innodb-read-only-compressed muss deaktiviert werden. Dies wird erreicht, indem der MySQL-Docker-Container gestartet wird mit

mysql_command.txt
--skip-innodb-read-only-compressed

Vollständige Kommandozeile, die bei mir funktioniert hat:

mysql_full_flags.txt
--transaction-isolation=READ-COMMITTED --binlog-format=ROW --innodb-file-per-table=1 --skip-innodb-read-only-compressed

Vollständiger docker-compose.yml-Abschnitt für Nextcloud:

docker_compose_nextcloud.yml
nextcloud-db:
  image: mariadb
  command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW --innodb-file-per-table=1 --skip-innodb-read-only-compressed
  restart: always
  volumes:
    - ./nextcloud-db:/var/lib/mysql
  environment:
    - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
    - MYSQL_PASSWORD=${MYSQL_PASSWORD}

Check out similar posts by category: Cloud, Databases, Technologies