[debian-mysql] Bug#886756: Bug#886756: Regression: Specified key was too long; max key length is 767 bytes
otto at debian.org
Mon Aug 6 22:09:44 BST 2018
I plan to have this commit included in the next upload of MariaDB
10.1.x into Debian:
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
> 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:
> 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
More information about the pkg-mysql-maint