Данные усечены для столбца?

после изменения типа данных столбца MySql для хранения Twilio вызов ids (34 строки символов), я пытаюсь вручную изменить данные в этом столбце с помощью:

update calls 
   set incoming_Cid='CA9321a83241035b4c3d3e7a4f7aa6970d' 
 where id='1';

однако я получаю ошибку, которая не имеет смысла, поскольку тип данных столбца был правильно изменен?

| Level ||| Code | Message | Warning | 1265 | Data truncated for column 'incoming_Cid' at row 1

4 ответов


ваша проблема в том, что на данный момент ваш incoming_Cid столбец, определенный как CHAR(1), когда он должен быть!--3-->.

чтобы исправить это, просто выполните эту команду, чтобы изменить длину столбцов от 1 до 34

ALTER TABLE calls CHANGE incoming_Cid incoming_Cid CHAR(34);

здесь SQLFiddle демо


выдав это заявление:

ALTER TABLES call MODIFY incoming_Cid CHAR;

... параметр length опущен. Поэтому ваш запрос был эквивалентен:

ALTER TABLE calls MODIFY incoming_Cid CHAR(1);

необходимо указать размер поля для размеров больше 1:

ALTER TABLE calls MODIFY incoming_Cid CHAR(34);

однако я получаю ошибку, которая не имеет смысла, поскольку тип данных столбца был правильно изменен?

| Level | Code | Msg | Warn | 12 | Data truncated for column 'incoming_Cid' at row 1

вы часто можете получить это сообщение, когда вы делаете что-то вроде следующего:

REPLACE INTO table2 (SELECT * FROM table1);

привело в нашем случае к следующей ошибке:

SQL Exception: Data truncated for column 'level' at row 1

проблема оказалась несоосностью столбцов, что привело к tinyint пытается храниться в


У меня была та же проблема из-за столбца таблицы, который был определен как перечисление ("x", "y", "z"), и позже я пытался сохранить значение " a " в этот столбец, таким образом, я получил упомянутую ошибку.

решено путем изменения определения столбца таблицы и добавленного значения " a " в набор перечислений.