How to fix Nextcloud 4047 InnoDB refuses to write tables with ROW_FORMAT=COMPRESSED or KEY_BLOCK_SIZE.
Problem:
When trying to maintenance:repair
your Nextcloud instance, e.g. during a utf8mb4 upgrade, you see an error message like
how-to-fix-nextcloud-4047-innodb-refuses-to-write-tables-with-row_formatcompressed-or-key_block_size.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.
Solution
You need to turn off innodb-read-only-compressed
. I do this by starting my MySQL docker with
example.txt
--skip-innodb-read-only-compressed
Full command line which worked for me:
example.txt
--transaction-isolation=READ-COMMITTED --binlog-format=ROW --innodb-file-per-table=1 --skip-innodb-read-only-compressed
Full docker-compose.yml
nextcloud section:
example.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
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow