У меня ошибка на работающем демоне pop3, который должен извлекать данные электронной почты с сервера и вставлять их в несколько таблиц локальной базы данных. Но я, кажется, каждую секунду получаю эту проблему в своем журнале, что, по моему мнению, негативно влияет на производительность базы данных и использует много пулов базы данных.
После просмотра этого сообщения я проверил длину данных моего столбца, а также реализовал код, который ограничивает доступ данных к БД, если он превышает указанную длину. Но даже после этого ошибка все равно происходит. Странно, что выполнение этого запроса отдельно в базе данных вставляет данные. Но запуск в WAS вызывает проблемы. SQL Server 2015. Нет триггеров для таблицы.
![TABLE CONSTRAINTS](https://i.stack.imgur.com/swfzP.jpg)
[SQL Ошибка] errorCode: 8152, sqlState: 22001, сообщение: строка или двоичные данные будут усечены
INSERT INTO t_mail_rcvinfo
(
rcvInfoId,
mailId,
rcvType,
rcvIdType,
rcvId,
sortNo,
rcvName,
device,
regUserId,
regDate,
chgUserId,
chgDate
)
VALUES
(
'CA2MLe38cc3c33863bb3b26bd8a36edeebc01',
'CA2MLe38cc3be3863bb3b26bd8a360f3fa9c7',
'TO',
'EMAIL',
'datpt@email.com',
'3',
'datpt@email.com',
'PC',
null,
'2020-03-17 12:02:07.056',
null,
'2020-03-17 12:02:07.056'
)
// Реализован код после рассмотрения проблемы
for (int i = 0; i < list1.size(); i++) {
MailRcvInfoVO infoVO = (MailRcvInfoVO)list1.get(i);
if (infoVO.getRcvId().getBytes("UTF-8").length > 200) {
rcvToIdLength = infoVO.getRcvId().getBytes("UTF-8").length;
isValidMail = false;
break;
}
if (infoVO.getRcvName().getBytes("UTF-8").length > 200) {
rcvToNameLength = infoVO.getRcvName().getBytes("UTF-8").length;
isValidMail = false;
break;
}
}