Ошибка при удаление строки из БД MySQL

dallas777

Новичок
Добрый день.
При удалении строки из БД , mysql ругается и пишет : Data too long for column 'id_title' at row 1
CREATE TABLE `contents` (
`id_title` text CHARACTER SET utf8 NOT NULL,
)
 

dallas777

Новичок
PHP:
DELETE FROM contents WHERE id_content='$id'
Чуть по другому опишу:
У меня есть таблица вот ее поля:
PHP:
CREATE TABLE `contents` (
  `id_content` int(11) NOT NULL AUTO_INCREMENT,
  `id_user` int(11) NOT NULL,
  `title` text CHARACTER SET utf8 NOT NULL,
  `content` varchar(256) CHARACTER SET utf8 NOT NULL,
  `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `term` date NOT NULL,
  `status` varchar(11) CHARACTER SET utf8 NOT NULL,
  `description` varchar(256) CHARACTER SET utf8 DEFAULT NULL,
  PRIMARY KEY (`id_content`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=149 ;
при удалении строки из БД и если в колонке "title" символов больше чем 11 тогда mysql ругается : Data too long for column 'title' at row 1.
А если символов меньше 11, тогда запрос на удаление строки проходит успешно.
Ставил тип строки: text, varchar(255), LONG TEXT.
 
Последнее редактирование:

hell0w0rd

Продвинутый новичок
Во-первых, id_content='$id' - вот от этого срочно избавляйся.
Во-вторых, у тебя явно выполняется что-то не то, что ты думаешь. Допустим идет запрос на запись, а ровно за ним удаление, или я что-то не знаю о mysql.
Ну и везде юникод, а у самой таблицы latin1... Думаю у тебя еще различаются кодировки базы в целом и коннекта.
 

dallas777

Новичок
Во-первых, id_content='$id' - вот от этого срочно избавляйся.
Во-вторых, у тебя явно выполняется что-то не то, что ты думаешь. Допустим идет запрос на запись, а ровно за ним удаление, или я что-то не знаю о mysql.
Ну и везде юникод, а у самой таблицы latin1... Думаю у тебя еще различаются кодировки базы в целом и коннекта.
1. ты имеешь в виду передавать данные в запросе не на прямую ??
2. Смотри как я хотел сделать запрос, удаляю строку из таблицы контент где айди_контента = текущей статье.
3. Что ты имеешь в виду больше юникод??
 

dallas777

Новичок
Во-первых, id_content='$id' - вот от этого срочно избавляйся.
Во-вторых, у тебя явно выполняется что-то не то, что ты думаешь. Допустим идет запрос на запись, а ровно за ним удаление, или я что-то не знаю о mysql.
Ну и везде юникод, а у самой таблицы latin1... Думаю у тебя еще различаются кодировки базы в целом и коннекта.
Почему все хорошо когда я устанавливаю меньше 10 символов? ?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Добавлю это https://dev.mysql.com/doc/refman/5.0/en/charset-table.html

Мне кажется автор не совсем честен с нами. Покажи нам минимальный код, который воспроизводит твою ошибку. То есть соединение с БД и запрос на удаление.
 

hell0w0rd

Продвинутый новичок
У тебя в принципе не может быть такой ошибки на удаление, база должна проверять соответсвтие данных структуре при изменениях...
Хотя удаление это же тоже изменение, может у тебя там лежит строка в utf8, на момент вставки все ок, тк вставка была через какой ни будь phpmyadmin, а тк удаление делается из скрипта с другой кодировкой, в которой та же строка длинее 11 символов - вот и получается ошибка.
В общем тут нужен магический шар и карты таро, или ТС нужно везде поставить одинаковую кодировку, а потом сюда приходить.
 

dallas777

Новичок
Доброе утро!
Все оказалось намного проще))
У меня в таблице 'contets' был установлен триггер который при удалении из таблицы 'contents' записывал в таблицу 'backup' в колонку 'id_title' значение. Тип поля был установлен 'varchar(11)' и поэтому mysql ругался на длину колонки 'id_title'
Всем спс за помощь!
 

dallas777

Новичок
Во-первых, id_content='$id' - вот от этого срочно избавляйся.
Во-вторых, у тебя явно выполняется что-то не то, что ты думаешь. Допустим идет запрос на запись, а ровно за ним удаление, или я что-то не знаю о mysql.
Ну и везде юникод, а у самой таблицы latin1... Думаю у тебя еще различаются кодировки базы в целом и коннекта.
Такой вопрос. что ты имеешь в виду это : Во-первых, id_content='$id' - вот от этого срочно избавляйся?
Есть какие-то предложения?
 
Последнее редактирование:

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
плейсхолдеры надо использовать, плейсхолдеры
 
Сверху