数据库服务器:Db2 v11.5.7.0扩展插件映像(https://hub.docker.com/r/ibmcom/db2)
数据库客户端:node.js +节点 db2 库(https://www.npmjs.com/package/db2)
我正在用Node.js开发Web应用程序,它使用了IBM Db2(Docker图像)。几乎所有的操作都运行良好,但我面临着一个奇怪的行为,似乎是产品故障。
我的代码是这样的。当我试图从表中删除所有记录时,我的意思是当我试图执行“delete from xxxx”SQL时,操作本身将按预期工作(所有记录在操作后将被删除),但应该有一个“警告”消息,因为它操作整个表。警告对我来说是好的。但在我的Node.js代码中,此“警告”将被处理为SQL状态为“01504”的“错误”:
// connection
var database_url = 'DATABASE=db;HOSTNAME=xx.xx.xx.xx;UID=user;PWD=pass;PORT=50000;PROTOCOL=TCPIP';
var Pool = require( 'ibm_db' ).Pool;
var pool = new Pool();
pool.init( 5, database_url );
pool.open( database_url, function( err, conn ){
conn.query( 'delete from xxxx', [], function( err, result ){
if( err ){
// here
conn.close();
console.log( err ); //"[DataDirect][ODBC DB2 Wire Protocol driver][UDB DB2 for Windows, UNIX, and Linux]The SQL statement will modify an entire table or view."
}else{
// not here
:
:
}
});
}
我不确定这是来自服务器还是客户端驱动程序。我是否错过了任何操作准备工作?我该如何处理?
1条答案
按热度按时间zbdgwd5y1#
它是按设计工作的。请看一下文档:https://github.com/ibmdb/node-ibm_db/blob/master/APIDocumentation.md
您应该使用以下方法:getSQLErrorSync,如果返回值〉0,则为警告;如果返回值〈0,则为错误: