Я пытаюсь преобразовать хранимую процедуру MySQL в Java-код. Это довольно простой SQL. Он создает три временных таблицы, а затем выбирает их на основе. Тем не менее, у меня возникают проблемы с SQLWarnings, связанными с вырезанием данных при создании последней таблицы temp.Как подавить JDBC SQLWarnings?
Я не ищу объяснения самих предупреждений. Я получал те же предупреждения во время выполнения хранимой процедуры (из-за неправильно отформатированных полей datetime), только там это не вызывало у меня проблем. В java-версии после того, как Statement.executeUpdate() выбрасывает SQLWarning, временная таблица, которую я пыталась создать, не существует.
Как я могу подавить SQLWarnings? Я предпочел бы иметь возможность регистрировать сообщение с предупреждающим текстом, но я хочу, чтобы моя временная таблица также была успешно создана.
Мой код выглядит примерно так:
sqlStatement = "create temporary table mytemptable as (select ...) ;";
try {
stmt.executeUpdate(sqlStatement);
// Throws SQLWarning about Data Truncation
} catch (SQLWarning sqlW) {
logInfo("SQLWarning Caught: " + sqlW.getMessage());
}
stmt.executeQuery("select * from mytemptable ");
// Throws SQLException because mytemptable doesn't exist
Пробовал это? http://dev.mysql.com/doc/mysqltest/2.0/en/writing-tests-warning-supp.html –
Может быть, плохая формулировка с моей стороны, но, как я уже сказал в своем посте, я не хочу притворяться, что предупреждений не существует. Я хотел бы получить предупреждения, но я не хочу, чтобы они прерывали выполнение моего кода, бросая SQLException. – user1538516
Итак, в этом случае вся таблица tmp не была создана. Поэтому просто игнорировать предупреждение не поможет. Можете ли вы попробовать: CREATE TEMPORARY TABLE mytemptable AS SELECT * FROM {yourtable} WHERE 0 = 1; И второе заявление: INSERT IGNORE INTO mytemptable SELECT * FROM {yourtable}; Это снова не вернет предупреждение ..... Он будет поддерживать ваш код –