我不斷收到此異常用DbUnit在同一個地方:DbUnit和SQL Server快速插座關閉
org.dbunit.dataset.DataSetException: com.microsoft.sqlserver.jdbc.SQLServerException: Socket closed
at org.dbunit.database.DatabaseTableMetaData.getColumns(DatabaseTableMetaData.java:359)
等
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Socket closed
at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(Unknown Source)
at com.microsoft.sqlserver.jdbc.TDSChannel.read(Unknown Source)
at com.microsoft.sqlserver.jdbc.TDSReader.readPacket(Unknown Source)
at com.microsoft.sqlserver.jdbc.TDSReader.readPacket(Unknown Source)
at com.microsoft.sqlserver.jdbc.TDSCommand.startResponse(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(Unknown Source)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQueryInternal(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerDatabaseMetaData.getResultSetFromStoredProc(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerDatabaseMetaData.getResultSetWithProvidedColumnNames(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerDatabaseMetaData.getColumns(Unknown Source)
at org.dbunit.database.DefaultMetadataHandler.getColumns(DefaultMetadataHandler.java:52)
at org.dbunit.database.DatabaseTableMetaData.getColumns(DatabaseTableMetaData.java:315)
... 15 more
試圖讀取來自列元數據時,會出現這種情況表。執行此操作的代碼如下所示:
new DefaultTable(tableName,
Columns.getColumns(columns,
connection.createDataSet(new String[]{tableName})
.getTableMetaData(tableName).getColumns()
)
)
連接是MsSqlConnection實例。起初我認爲這是一個網絡問題,但是這個理論有兩個問題。首先運行測試的服務器和數據庫都是同一個xen服務器上的虛擬機,所以沒有真正的網絡。其次,雖然問題不一致,但每次都發生在同一個地方。有超過100個數據庫測試,但同一個失敗(失敗時)。
有沒有人跑過類似的問題?任何見解?
你看,如果你的測試之間有任何耦合... 如果它「隨機失敗」,你可能會改變以前的測試環境。 – 2009-08-27 22:19:30
這是一個很好的建議,但我沒有看到耦合。數據庫連接似乎每次都會創建並關閉。 – Yishai 2009-08-27 22:25:24
我們在虛擬機中運行一些軟件時遇到了奇怪的網絡問題。在一個案例中,我們的源代碼管理系統會隨機丟失連接。我們最終放棄並將其移至自己的專用盒子中。可能不適合你,但我想我會把它扔在那裏。 – 2009-08-27 22:35:46