1.前言
最近在用VC6開發的程序通過ODBC訪問Oracle 9i數據庫時,經常會報“ORA-01013: user requested cancel of current operation”錯誤。
進行UPDATE和INSERT操作時都有可能發生,而且不限於某一個數據表。
2.解決辦法
在網上查了一下資料,總結出解決辦法:
1.修改 $ORACLE_HOME/NETWORK/ADMIN/sqlnet.ora,添加或修改成:SQLNET.EXPIRE_TIME = 0
這將關閉Oracle的連接狀態檢測。
2.在ODBC管理中去掉 'Enable Query Timeout'復選框。如圖1所示:
圖1
3.在程序中的連接數據庫的字符串中添加
QTO=F,成為這樣的連接字符串:“;DSN=DB;UID=a;PWD=b;QTO=F”。
4。在Connection對象上設置SetQueryTimeout(0)。
app->m_pDatabase->SetQueryTimeout(0);
3.總結
經過一個星期的測試,證明這個辦法確實好用。原來每天都會報這個錯誤,現在程序已經不間斷運行了7天,一個這樣的錯誤都沒報。