DataIntegrityViolationException: усечение данных относительно PreparedStatementCallback - PullRequest
1 голос
/ 30 января 2020

У меня есть проблема, связанная с PreparedStatementCallback, который отображается следующим образом:

 Error! Conflict [#409]: PreparedStatementCallback; SQL [EXEC de_table ?, ?, ?, ?, ?, ?, ?, ?]; Data truncation; nested exception is java.sql.DataTruncation: Data truncation

Контекст:

У меня есть раздел, который используется для создания таблиц со значениями из моего приложения До недавнего времени я обнаружил, что нет никаких проблем, кроме одной из 4 баз данных, которые я тестировал. Проблема в том, что я не понимаю, почему это так, поскольку я протестировал его на нескольких других БД, и эта страница работает, как и ожидалось. Поэтому я предполагаю, что код в порядке, а данные - нет. Я выполнил ту же процедуру для заполнения таблицы, но, увы, ошибка все еще есть.

URL моего запроса состоит из следующего:

accessInd: Any
client: %
endDate: 2020-02-15 23:59:59
entDate: 2020-01-30 11:32:49
entitlementSetMode: 1
entitlementType: Historical
groupItem: %
groupType: 15
service: %
site: %
siteName: %
startDate: 2020-01-30 00:00:00
subservice: %
type: %
userLogin: %

Любые значения, которые необходимо передать в подготовленный оператор, следующие:

                        exampleTable.getSite(),
                        exampleTable.getGroupType(),
                        exampleTable.getGroupItem(),
                        exampleTable.getService(),
                        exampleTable.getType(),
                        exampleTable.getSubservice(),
                        exampleTable.getEndDate(),
                        exampleTable.getMaxRowCount()

Кто-нибудь знаете, почему это не работает или какая-то помощь? Кроме того,%, если кому-то интересно, просто используется для запроса всего, что связано с этим значением. Спасибо.

1 Ответ

0 голосов
/ 30 января 2020

Проверьте, поддерживает ли тип / размер полей вашей базы данных длину данных, которую вы пытаетесь вставить в нее.

Возможно, существует небольшая разница в схеме между тремя работающими БД и той, которая не работает .

Допустим, поле yourdb.exampleTable.site представляет собой VARCHAR(10), а exampleTable.getSite() - "my-site-name-is-more-than-10-chars-long", что приведет к созданию этого java.sql.DataTruncation исключения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...