После изменения типа данных столбца MySql для хранения идентификаторов вызовов Twilio (34 строки символов) я пытаюсь вручную изменить данные в этом столбце с помощью:
update calls
set incoming_Cid='CA9321a83241035b4c3d3e7a4f7aa6970d'
where id='1';
Однако я получаю сообщение об ошибке, которое не имеет смысла, поскольку тип данных столбца был правильно изменен?
| Level ||| Code | Message
| Warning | 1265 | Data truncated for column 'incoming_Cid' at row 1
ALTER TABLES calls MODIFY incoming_Cid STRING;
это то, что я сделал.STRING
не является типом MySQL. Какой у вас движок базы данных?Ответы:
Ваша проблема в том, что на данный момент ваш
incoming_Cid
столбец определен так, какCHAR(1)
долженCHAR(34)
.Чтобы исправить это, просто введите эту команду, чтобы изменить длину столбцов с 1 до 34.
ALTER TABLE calls CHANGE incoming_Cid incoming_Cid CHAR(34);
Вот демонстрация SQLFiddle
источник
У меня была такая же проблема из-за столбца таблицы, который был определен как ENUM ('x', 'y', 'z'), а позже я пытался сохранить значение 'a' в этом столбце, поэтому я получил упомянутый ошибка.
Решено путем изменения определения столбца таблицы и добавления значения «а» в набор перечислений.
источник
Выпуская это заявление:
ALTER TABLES call MODIFY incoming_Cid CHAR;
... вы пропустили параметр длины. Таким образом, ваш запрос был эквивалентен:
ALTER TABLE calls MODIFY incoming_Cid CHAR(1);
Вы должны указать размер поля для размеров больше 1:
ALTER TABLE calls MODIFY incoming_Cid CHAR(34);
источник
Вы часто можете получить это сообщение, когда делаете что-то вроде следующего:
REPLACE INTO table2 (SELECT * FROM table1);
Вызвало в нашем случае следующую ошибку:
Проблема оказалась в несовпадении столбцов, что привело к
tinyint
попытке сохранения вdatetime
поле или наоборот.источник
В моем случае это была таблица с ENUM, которая принимает дни недели как целые числа (от 0 до 6). При вставке значения 0 как целого числа я получил сообщение об ошибке «Данные усечены для столбца ...», поэтому, чтобы исправить это, мне пришлось преобразовать целое число в строку. Так что вместо:
$item->day = 0;
Я должен был сделать;
$item->day = (string) 0;
Выглядит глупо так бросать ноль, но в моем случае это было на фабрике Laravel, и мне пришлось написать это так:
$factory->define(App\Schedule::class, function (Faker $faker) { return [ 'day' => (string) $faker->numberBetween(0, 6), // ]; });
источник
когда я впервые попытался импортировать csv в mysql, я получил ту же ошибку, а затем я понял, что созданная мной таблица mysql не имеет длины символа импортируемого поля csv, поэтому, если это первый раз, когда импортируется csv
varchar
илиtext
, не смешивайтеint
или другие значения.тогда вам хорошо идти.
источник
У меня была та же проблема с полем базы данных типа «SET», которое является типом перечисления.
Я попытался добавить значение, которого не было в этом списке.
Значение, которое я пытался добавить, имело десятичное значение 256, но в списке перечислений было только 8 значений.
Поэтому мне просто нужно было добавить дополнительное значение в поле.
Чтение этой записи в документации помогло мне понять проблему.
SET Member Decimal Value Binary Value 'a' 1 0001 'b' 2 0010 'c' 4 0100 'd' 8 1000
источник