Problem during 4-Byte support upgrade

Hello,

on my server I have some users which are using nextcloud. All nextcloud installations a separated and are all running on version 20.0.10.
Yesterday I started to establish the 4-Byte support (https://docs.nextcloud.com/server/16/admin_manual/configuration_database/mysql_4byte_support.html#mariadb-10-3-or-later) on all the eight NC-instances, without any problems - except one.

During the 4-Byte Support Upgrade of the last user I got the following error (all the other upgrades worked fine):
“…
In AbstractMySQLDriver.php line 106:
An exception occurred while executing ‘ALTER TABLE oc_properties CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;’:
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes
…”

In the output of “SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME like “db16_%”;” I can see, that the ROW_FORMAT of some of the tables are COMPRESSED and other not (Dynamic), which looks like the maintenance:repair command is only runnig successfully on some tables (nearly the half of all tables).

For me it looks like a problem in the database of especially that customer and not a general OS or MariaDB problem.
Do you have an idea how I can solve the issue for that one?

Thanks a lot
Regards
Martin


Nextcloud version: 20.0.10
Debian 10.11 (64-bit)
Apache 2.4.38
PHP 7.4.23
MariaDB 10.3.31

Sorry i am not an MariaDB expert. But i found this for you.

2 Likes

Hello devnull,

thanks for that fruitful hint - this was exactly what I have needed.
After changing the Engines from MyISAM to InnoDB (of all the blocking tables) the maintenance:repair successfuly runs.

Thanks a lot
Regards
Martin

3 Likes