MySQL Ошибка 1292 при вставке текста
Я пытаюсь вставить комбинацию из 2 полей в одно поле, и каждый раз, когда я делаю это, я получаю ошибку об усечении данных.
Код:
insert into sharppatentdb.Inventor (InventorFull)
select InventorFirst + " " + InventorLast
from sharppatentdb.inventorsource;
Ошибка:
Код ошибки: 1292. Усеченное неверное значение DOUBLE: '
Rossi-Wolter
'
Все исходные поля VARCHAR(64)
Поле InventorFull VARCHAR(511)
Что я делаю неправильно?
1 ответ
Так что проблема в том, что InventorFull
должно быть 511
символы, основанные на этом утверждении:
Все поля VARCHAR(255)
потому что где-то в соединении двух полей InventorFirst
, единое пространство, и InventorLast
больше 255 символов. Когда вы создаете поля для объединенных значений, они должны быть объединенным размером обоих полей, а также любых дополнительных символов.
Чтобы более четко описать причину, по которой ваш InventorFull
поле должно быть 511
символы - ваши два поля 255
символов, и вы добавляете один символ между:
255 + 255 + 1 = 511
далее, как показано в комментариях, стоит отметить, что это не будет работать на версиях MySQL, которые ниже 5.0.3.