В Debian Jessie я установил сервер MariaDB 10.0.30, и я пытаюсь увеличить максимальную длину ключа. AFAIU зависит от параметра конфигурации innodb_large_prefix
. Согласно документации, это также требует barracuda
формат файла и innodb_file_per_table
. После установки их в конфигурации и перезапуска сервера я вижу на клиенте, что эти параметры установлены правильно:
> SHOW GLOBAL VARIABLES LIKE 'innodb_large%';
+---------------------+-------+
| Variable_name | Value |
+---------------------+-------+
| innodb_large_prefix | ON |
+---------------------+-------+
1 row in set (0.00 sec)
> SHOW GLOBAL VARIABLES LIKE 'innodb_file%';
+--------------------------+-----------+
| Variable_name | Value |
+--------------------------+-----------+
| innodb_file_format | Barracuda |
| innodb_file_format_check | OFF |
| innodb_file_format_max | Antelope |
| innodb_file_per_table | ON |
+--------------------------+-----------+
4 rows in set (0.00 sec)
> SHOW GLOBAL VARIABLES LIKE 'innodb_page%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| innodb_page_size | 16384 |
+------------------+-------+
1 row in set (0.00 sec)
Я не уверен, почему innodb_file_format_max
установлен Antelope
, но пока innodb_file_format_check
выключен, это не имеет значения. На самом деле, даже если бы у меня было это, то и Barracuda
, это не имело значения.
Если я попытаюсь создать таблицу с большим индексом, например:
CREATE TABLE 'some_table' (
'some_tableID' int(10) unsigned NOT NULL AUTO_INCREMENT,
'column' varchar(750) COLLATE utf8mb4_estonian_ci NOT NULL DEFAULT '',
PRIMARY KEY ('some_tableID'),
KEY 'column' ('column')
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_estonian_ci;
Я получаю ошибку:
ERROR 1709 (HY000): Index column size too large. The maximum column size is 767 bytes.
На Ubuntu 16.04 с сервером mysql 5.7.17 все связанные настройки одинаковы (по умолчанию), и нет проблемы с большим индексом (для utf8mb4 это 750 * 4 = 3000).
Что не так с моей настройкой MariaDB?