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.

Другие вопросы по тегам