Невозможно установить столбец = 0, если он равен 1, «Данные слишком длинные для столбца ...» - PullRequest
0 голосов
/ 06 января 2020

Я использую столбец в моей MySQL БД для представления полного и неполного. Столбец называется status, а его тип данных - BIT (1). Каждая строка начинается с 0 и заканчивается на 1, это не проблема. Я сталкиваюсь с проблемой, когда пытаюсь переназначить значение на 0. Я получаю сообщение об ошибке:

 ERROR 1406: 1406: Data too long for column 'status' at row 1
 SQL Statement:
 UPDATE `todolist`.`tasks` SET `status` = '0' WHERE (`id` = '2ea91f19-e8d4-4caf-8583- 
 4bdaff276ca3')

В этом примере id - это просто идентификатор строки, которую я пытаюсь отредактировать. Спасибо за вашу помощь!

Ответы [ 3 ]

0 голосов
/ 06 января 2020

Вам следует присвоить столбец status BIT битовому литералу 0 без одинарных кавычек:

UPDATE todolist.tasks
SET status = 0
WHERE id = '2ea91f19-e8d4-4caf-8583-4bdaff276ca3';

Я действительно удивлен, что MySQL не удалось выполнить неявное приведение здесь, но, возможно, это не может.

0 голосов
/ 06 января 2020

ответ: вместо = try IN

ОБНОВЛЕНИЕ 'todolist'. 'Tasks' SET 'todolist'. 'Status' = 0 WHERE id in ('2ea91f19-e8d4-4caf-8583-4bdaff276ca3 «)

0 голосов
/ 06 января 2020

Если вы установите столбец как бит, допустимые значения будут 0 или 1. отличными от '0' и '1'

 UPDATE `todolist`.`tasks` SET `status` = 0 WHERE (`id` = '2ea91f19-e8d4-4caf-8583- 
 4bdaff276ca3')
...