MySQL сообщает об ошибке при импорте sql: ОШИБКА 1071 (42000) в строке 1236: указанный ключ слишком длинный; максимальная длина ключа составляет 1000 байт.
Причина в том, что при выполнении задачи восстановления MySQL был обнаружен слишком длинный ключ.
Код ошибки 1071 обычно возникает из-за того, что ядро базы данных пытается создать ключ при восстановлении данных, но длина ключа превышает максимальную длину, разрешенную ядром базы данных (1000 байт).
Для решения данной проблемы можно рассмотреть следующие варианты:
1. Сократите длину ключа. Если возможно, измените схему данных или структуру таблицы так, чтобы длина ключа не превышала 1000 байт. Это можно сделать, уменьшив длину ключа, используя более короткие типы полей или удалив некоторые индексы.
2. Изменить конфигурацию базы данных: Если у вас есть разрешение Изменить конфигурацию базы данных, вы можете попробовать изменить параметры конфигурации ядра базы данных, чтобы разрешить использование ключей большей длины. Этот метод может вызвать другие проблемы, поэтому используйте его с осторожностью.
3. Анализируйте и оптимизируйте схему данных. Тщательно проанализируйте схему данных и структуру индексов в базе данных, чтобы определить наличие ненужных индексов или избыточных полей, и оптимизируйте их, чтобы уменьшить длину ключа.
4. Разделите ключ. Если ключ содержит несколько полей, рассмотрите возможность разделения его на несколько более коротких ключей, чтобы длина каждого ключа не превышала ограничение.
5. Используйте конкретный механизм хранения. Разные механизмы хранения могут иметь разные ограничения на длину ключей. Вы можете попробовать использовать другой механизм хранения, чтобы посмотреть, решит ли это проблему.
MySQL имеет ограничение длины индексного ключа для механизма хранения InnoDB, которое зависит от набора символов.
Например, если вы используете набор символов utf8mb4, каждый символ может занимать 4 байта, поэтому максимальная длина еще больше уменьшается.
Эта ошибка возникает, если ваша таблица использует набор символов utf8mb4 и вы пытаетесь создать индекс, длина которого превышает ограничение в 1000 байт.
путем изменения MySQL Конфигурация для решения этой проблемы. В частности, вы можете изменить innodb_large_prefix
и innodb_file_format
параметр.
innodb_large_prefix: управление параметрами InnoDB Поддерживает ли механизм хранения данные размером более 767 Префикс индекса в байтах. установите его на ON
Могут быть разрешены более длинные префиксы индекса, что позволяет поддерживать более длинные ключи.
innodb_file_format: управление параметрами InnoDB Формат файла механизма хранения. установите его на Barracuda
и включить innodb_large_prefix
Параметры могут допускать более длинные префиксы индекса.
Вы можете изменить конфигурацию MySQL, выполнив следующие действия:
оказаться MySQL файл конфигурации, обычно my.cnf
или my.ini
,Точное расположение может варьироваться в зависимости от способа установки.
В файл Конфигурация добавьте или добавьте следующие две строки Конфигурация:
innodb_large_prefix=ON
innodb_file_format=Barracuda
Сохраните и закройте файл конфигурации.
Перезапустите службу MySQL, чтобы измененная конфигурация вступила в силу.