Усечение данных: неверное значение даты и времени - PullRequest
0 голосов
/ 15 мая 2018

Я работаю в весеннем проекте, который использует MySQL DB.Когда каждая команда вставки и обновления sql запускается на стороне сервера проекта, пока приложение выполняется в моем локальном компьютере, я получаю исключения этих типов для переменных «datetime»;

Причина: java.sql.BatchUpdateException: усечение данных: Неверное значение даты и времени: '' для столбца 'CREATION_DATE' в строке 1 в com.mysql.jdbc.ServerPreparedStatement.executeBatch (ServerPreparedStatement.java:665) в org.hibernate.jdbc.BatchingBatch: 70) at org.hibernate.jdbc.AbstractBatcher.executeBatch (AbstractBatcher.java:268) ... еще 54

Версия MySQL: 5.7.18, версия mysql-connector-java: -5.1.38, пользовательский часовой пояс равен "-Duser.timezone = Europe / Istanbul" в аргументах tomcat 7 vm и часовом поясе дБ: GMT + 3

Блок примера кода;

        ResponseCreateTicket response = new ResponseCreateTicket();
        TicketDTO ticket=new TicketDTO();
ticket.setTicketNumber(UUID.randomUUID().toString().toUpperCase(Locale.ENGLISH));
        ticket.setStatus(TicketStatus.UNCOMPLETED.toString());
        Date date = new Date();
        ticket.setCreatedOn(date);
        ticket.setReferenceNumber(request.getReferenceNumber());
        getTicketDAO().createTicket(ticket);
        response.setTicketNumber(ticket.getTicketNumber());
        return response;

Показанные и связанные параметры sql hibernate;

Hibernate: вставка в eis_ticket (TICKET_NUMBER, STATUS, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE (IDATE))?,?,?,?,?,?,?,?) 2018-05-16 10:57:37 TRACE BasicBinder :?- параметр привязки [1] как [VARCHAR] - 9BF25A08-C442-45FA-A95F-8E59502CE037 2018-05-16 10:57:37 TRACE BasicBinder :?- параметр привязки [2] как [VARCHAR] - НЕЗАКОНЧЕННЫЙ 2018-05-16 10:57:37 TRACE BasicBinder :?- параметр привязки [3] как [VARCHAR] - 2018-05-16 10:57:37 TRACE BasicBinder :?- параметр привязки [4] как [TIMESTAMP] - ср. 16 мая 10:57:32 EEST 2018 2018-05-16 10:57:37 TRACE BasicBinder :?- параметр привязки [5] как [VARCHAR] - 2018-05-16 10:57:37 TRACE BasicBinder :?- параметр привязки [6] как [TIMESTAMP] - 2018-05-16 10:57:37 TRACE BasicBinder :?- параметр привязки [7] как [VARCHAR] - b4be9b87-21c4-4001-b80d-244420ab2e00 2018-05-16 10:57:37 TRACE BasicBinder :?- параметр привязки [8] как [BIGINT] - 1925 2018-05-16 10:57:37 ОШИБКА JDBCExceptionReporter :?- Усечение данных: неверное значение даты и времени: '' для столбца 'CREATION_DATE' в строке 1

Формат даты можно изменить на «гггг-мм-дд ЧЧ: мм: сс», но их сотникодов этих типов в проекте, так что это не будет правильным решением.Что может быть причиной этой проблемы?Mysql разъем обновлен, но не работает.

1 Ответ

0 голосов
/ 15 мая 2018

Если тип столбца - дата-время, вы можете легко изменить столбец и установить значение по умолчанию CURRENT_TIMESTAMP, это гарантирует, что для каждой вставленной записи по умолчанию будут использоваться текущая дата и время сервера. Однако, если вы генерируете метку времени вручную, тогда тип данных, сгенерированный в приложении, не похож на тип данных, используемый при вставке в базу данных. Вы можете использовать это, чтобы изменить столбец по умолчанию, а затем оставить столбец creation_type NULL при вставке записи.

ALTER TABLE table MODIFY CREATION_DATE TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;

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