Ты используешь VARCHAR(3600) для поля AD, но при этом получаешь ошибку "Data too long for column 'AD'", что указывает на то, что фактическое значение превышает лимит.
Возможные причины:
Кодировка utf8mb4_bin:
В этой кодировке один символ может занимать до 4 байт, так что:
VARCHAR(3600) = максимум ~3600 символов, но максимум по байтам — 3600 * 4 = 14400 байт
Однако MySQL ограничивает длину VARCHAR полей до 65535 байт на всю строку, включая прочие поля, служебные байты и т.д. Если суммарно строка таблицы становится слишком большой — тоже будет ошибка.
Сама строка длиннее 3600 символов (независимо от байт).
Что делать:
1. Проверка длины строки
Перед вставкой проверь длину значения:
Код:
SELECT LENGTH(AD), CHAR_LENGTH(AD) FROM твоя_таблица;
2. Убедись, что вставляемое значение не длиннее 3600 символов:
Пример на обрезку:
Код:
INSERT INTO ads (AD) VALUES (LEFT('очень_длинный_текст...', 3600));
3. Если тебе реально нужно больше — используй TEXT, MEDIUMTEXT или LONGTEXT:
Код:
ALTER TABLE ads MODIFY COLUMN AD TEXT;
-- или
ALTER TABLE ads MODIFY COLUMN AD MEDIUMTEXT;
TEXT не позволяет задать длину, но вмещает до 65 535 байт.
Если покажешь, какое конкретно значение вставляешь — смогу точно подсказать.