Gitea 1.5 on MariaDB 10.1
utf8mb4_general_ci; specified key was too long; max key length is 767 bytes
In case you’ve tried to upgrade to Gitea 1.4 or 1.5 on Debian 9 with MariaDB 10.1 the following error messages will thrown to your log and the service won’t start:
[...itea/routers/init.go:60 GlobalInit()] [E] Failed to initialize ORM engine: migrate: do migrate: Sync2: Error 1071: Specified key was too long; max key length is 767 bytes
The issue is caused by the newly introduced charset
utf8mb4_general_ci which is set to default in Gitea >=1.4. This charset requires 4 bytes per character and the indexes on
utf8mb4_general_ci fields (varchar 255) won’t fit into the InnoDB scheme.
The only reliable solution is an upgrade to MariaDB 10.2 or 10.3. Just changing settings like
innodb_file_format=Barracuda as mentioned on several sites won’t have any effect to existing tables.
I’ve used a legacy version of Gitea (1.2.3) for a long time which was created initially as
utf8_general_ci scheme. Therefore i’ve decided to alter the table + field charsets manually via phpmyadmin and set them to
You have to run the upgrade procedure (start gitea executable) a several time because new tables are not created at once (repeat it 3..5 times).
Finally it works but i’m not sure if there will be any side effects in the future..