[debian-mysql] Bug#886756: Bug#886756: Regression: Specified key was too long; max key length is 767 bytes

Jonas Meurer jonas at freesources.org
Tue Aug 7 09:51:55 BST 2018


Hey Otto,

Am 06.08.2018 um 23:09 schrieb Otto Kekäläinen:
> I plan to have this commit included in the next upload of MariaDB
> 10.1.x into Debian:
> https://salsa.debian.org/mariadb-team/mariadb-10.1/commit/89ae638d1d3b5a7157d086a9be2468cae764aae7

Yay, that's great news. Thanks a ton!

Cheers
 jonas

> ti 9. tammik. 2018 klo 17.45 Jonas Meurer (jonas at freesources.org) kirjoitti:
>>
>> Package: mariadb-server-10.1
>> Version: 1:10.1.29-6
>> Severity: serious
>> Tags: upstream
>>
>> Control: -1 forwarded https://jira.mariadb.org/browse/MDEV-14904
>>
>> Hello,
>>
>> I just discovered that MariaDB 10.1 packages in Sid, Buster and Stretch
>> break applications that expect a maximum allowed size of 255 characters
>> for VARCHAR fields. E.g.:
>>
>>> django.db.utils.OperationalError: (1071, 'Specified key was too long;
>>> max key length is 767 bytes')
>>
>> This is due to the fact that MariaDB in Debian has `utf8mb4` set as
>> default character since version 10.0.20-2 which raises the required
>> amount of memory per character.
>>
>> To still allow fields with > 191 < 255 characters, `innodb_large_prefix`
>> has to be enabled, which in turn requires the following settings:
>>
>>> innodb_file_format      = Barracuda
>>> innodb_file_per_table   = On
>>> innodb_large_prefix     = On
>>
>> Unfortunately even that is not enough. Additionally, the row format for
>> tables needs to be changed to `dynamic`.
>>
>> Starting with MariaDB 10.2, `innodb_default_row_format` was introduced,
>> which allows to set the default row format for the whole MariaDB server.
>> Unfortunately, this option is not available in MariaDB 10.1 yet. In
>> other words, there's no way to configure MariaDB 10.1 in Debian in a way
>> that it works with applications that expect things like VARCHAR(255) to
>> be possible.
>>
>> This is a severe regression. I discussed this topic with MariaDB
>> upstream developer Marko Mäkelä (dr-m) on IRC and he agreed that they
>> can backport `innodb_default_row_format` for the next upstream release
>> of MariaDB 10.1. I created an upstream bugreport to track this:
>>
>> https://jira.mariadb.org/browse/MDEV-14904
>>
>> I suggest that this fix should be backported to MariaDB 10.1 in Debian
>> Stable as well as it is a severe regression compared to MySQL and
>> earlier MariaDB versions (i.e. pre 10.0.20-2).
>>
>> PS: This problem doesn't exist with MariaDB >= 10.2 or MySQL 5.7 as
>> both switched to `Barracudea` as default `innodb_file_format` along
>> with `innodb_large_prefix` and `dynamic` as default row format.
>>
>> See the following bugreports and discussion threads for further details:
>>
>> * https://jira.mariadb.org/browse/MDEV-9646
>> * https://code.djangoproject.com/ticket/18392
>> * https://stackoverflow.com/questions/30761867/mysql-error-the-maximum-column-size-is-767-bytes


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <http://alioth-lists.debian.net/pipermail/pkg-mysql-maint/attachments/20180807/31115dae/attachment.sig>


More information about the pkg-mysql-maint mailing list