-1
我想將一個MySQL存儲過程轉換爲java代碼。這是非常簡單的SQL。它創建三個臨時表,然後根據它們進行選擇。但是,我在創建最後一個臨時表時遇到與數據截斷相關的SQLWarnings問題。如何禁止JDBC SQLWarnings?
我不是在尋找警告本身的解釋。我在存儲過程的執行過程中得到了相同的警告(由於格式不正確的日期時間字段),只是在那裏沒有引起任何問題。在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}; 這又不會返回警告.....它會保持您的代碼運行 –