Web Мастерская
MySQL: #1071 - Указан слишком длинный ключ
Ошибка: #1071 - Указан слишком длинный ключ. Максимальная длина ключа составляет 1000 байт, может появиться при сменены кодировки полей таблицы (Блог: MySQL: Как изменить кодировку запросом).
Во многих случаях, помогает уменьшение длинны поля, например, с
Во многих случаях, помогает уменьшение длинны поля, например, с
varchar(255)
на varchar(250)
. Чтобы указать более подходящею длину, используйте запрос, который поможет определиться с нужной длинной: Блог: MySQL: Как получить самую длинную строку столбца....- Жалоба
MySQL: Как изменить кодировку запросом
Примеры запросов меняйте под себя.
Меняем кодировку Базы Данных на:
Меняем кодировку таблицы на:
Меняем кодировку столбца на:
...
Меняем кодировку Базы Данных на:
utf8mb4
:
ALTER DATABASE
`имяБазыДанных`
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_unicode_ci;
Меняем кодировку таблицы на:
utf8mb4
:
ALTER TABLE
`имяТаблицы`
CONVERT TO CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
Меняем кодировку столбца на:
utf8mb4
:
ALTER TABLE
`имяТаблицы`
CHANGE `имяСтолбца`
VARCHAR(55)
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
MySQL: Как получить самую длинную строку столбца
Порой необходимо знать самую длинную строку столбца, чтобы правильно указать размер поля. Для этого можно использовать запрос:
Укажите свой
SELECT MAX(`столбец`) FROM `таблица`;
Укажите свой
столбец
и таблицу
и выполните запрос. Запрос вернёт самую длинную строку....Uncaught mysqli_sql_exception: Data too long for column
Получил ошибку: Uncaught mysqli_sql_exception: Data too long for column. Из текста ошибки ясно, что машина получила слишком длинные данные.
Я не стал менять тип поля, чтобы увеличить еёёмкость, я просто сделал проверку на длину строки, перед сохранением данных в Базу Данных (По аналогии: Тема: Слишком большое имя (failed to open stream: File name too long)).
Делаю так:
Готово. Ошибка исчезла.
Строка нужна для одногоразового поиска, и длиннее чем 250 символов, она ни к чему. Поэтому, в моём случае, удаление части строки допустимо. Если это не Ваш случай, рассмотрите вариант с увеличениемёмкости поля, куда сохраняется запись, либо замену типа столбца....
Я не стал менять тип поля, чтобы увеличить её
Делаю так:
$insert['search_query'] = (mb_strlen($search) > 250) ? mb_substr($search, 0, 250) : $search;
Готово. Ошибка исчезла.
Строка нужна для одногоразового поиска, и длиннее чем 250 символов, она ни к чему. Поэтому, в моём случае, удаление части строки допустимо. Если это не Ваш случай, рассмотрите вариант с увеличением
Карусель фотографий
Для одной своей идеи, использовал карусель фотографий, взятую из интернета и переписанную под себя. Выложу, как было у меня. Карусель использует библиотеку jQuery, так что придется подключать её, хотя, переписать на чистый JavaScript не составит особого труда.
jQuery:
...
jQuery:
var carouselID = 1, change = 8000;
function carouselStart() {
if ($('div[data-carousel="carousel"]').length < 1) {
return false;
};
$('div[data-carousel="carousel"]').each(function() {
$(this).removeAttr('data-carousel').attr('id', 'carousel_' + carouselID);
carousel('#carousel_' + carouselID);
carouselID++;
});
};
$(() => {
carouselStart();
window.setInterval(carouselStart, 3000);
});
function carousel(carouselID) {
var $slr, $sls, interval, $selectors, $btns, currentIndex, nextIndex;
var cycle = index => {
var $currentSlide, $nextSlide, $currentSelector, $nextSelector;
nextIndex = index !== undefined ? index : nextIndex;
$currentSlide =