Web МастерскаяБлог
Сообщество 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 символов, она ни к чему. Поэтому, в моём случае, удаление части строки допустимо. Если это не Ваш случай, рассмотрите вариант с увеличением
MySQL: Как произвести замену строки по всей таблице
Потребовалось мне произвести замену строки 
Одно мгновение и замена произведена, во всех записях сразу.
Если надо заменить сразу несколько строк/подстрок, можно делать так:
...
size:: на size:, сразу во всех записях, в поле text, таблицы comment. В чём мне помог запрос ниже:
UPDATE `comment`
SET `text` = replace(`text`, 'size::', 'size:');Одно мгновение и замена произведена, во всех записях сразу.
Если надо заменить сразу несколько строк/подстрок, можно делать так:
UPDATE `comment` SET `text` = replace(`text`, '[size:1]', '[title]');
UPDATE `comment` SET `text` = replace(`text`, '[size:2]', '[title]');
UPDATE `comment` SET `text` = replace(`text`, '[size:3]', '[title]');
UPDATE `comment` SET `text` = replace(`text`, '[/size]', '[/title]');
Категории
- Apache 6
 - CMS 3
 - CSS 16
 - FTP 1
 - HTML 11
 - JavaScript 43
 - MySQL 17
 - Nginx 16
 - PHP 51
 - phpMyAdmin 2
 - SVG 3
 - URL 1
 - XML 3
 - Безопасность 7
 - Библиотека JS 16
 - Графика 3
 - Доменное имя 1
 - Инструкция 1
 - Кодировка 2
 - Контент 8
 - Мнение 1
 - Мобильное устройство 1
 - Монетизация сайта 2
 - Настройка 3
 - Оптимизация 2
 - Ошибка 10
 - Поисковая система 1
 - Продвижение сайта 6
 - Производительность 1
 - Софт 1
 - Старт 2
 - Сценарий 1
 - Функция 1
 - Хостинг | Сервер 3
 
Реклама













