Why is my query working on pgAdming but when I execute it from the server I get a query error (Error: Connection Terminated)?
Why is my query working on pgAdming but when I execute it from the server I get a query error (Error: Connection Terminated)?
我正在处理我的 Capstone 项目,它需要在数据库中存储一些遥测数据。我将 PostgreSQL 9.5 用于数据库和服务器节点。
我的问题是,当我尝试从服务器发送查询时,出现查询错误 [错误:连接已终止]。如果我使用 JSON.stringify(err)
,我只会看到空括号作为结果 {}
。有趣的是,如果我使用 pgAdmin 客户端并执行相同的查询,则记录添加成功,没有任何错误。
这是我在服务器中用来发送查询的代码:
client.connect(function(err) {
if(err){
return console.error('could not connect to postgres', err);
}
//Checks if there is survey data to process
if(surveyFlag){
//Query to insert survey record
//Returns survey record's auto-generated id to use it when creating or updating the //telemetry record in the database
var query = 'INSERT INTO survey_response (perceived_risk, actual_risk) '+
'VALUES (' + telemetryRecord.survey.perceivedRisk +', ' +
telemetryRecord.survey.actualRisk +') ' +
'RETURNING survey_id';
client.query(query, function(err, result) {
console.log("Query: " + query);
if(err) {
console.log(err);
return console.error('error running survey query', err);
}
surveyID = result.rows[0].survey_id;
//Testing
console.log ("Survey response added with ID: " + surveyID);
});
//Close the connection
client.end();
});
代码client.end()
与代码client.query()
放在同一层。由于 client.query()
是异步的,因此 client.end()
会在您开始查询后立即被调用。当查询返回时,客户端已经结束,这是导致问题的原因。
尝试将 client.end()
代码放在 client.query()
的回调函数中。
client.query(query, function(err, result) {
console.log("Query: " + query);
if(err) {
console.log(err);
return console.error('error running survey query', err);
}
surveyID = result.rows[0].survey_id;
//Testing
console.log ("Survey response added with ID: " + surveyID);
//Close the connection
client.end();
});
我正在处理我的 Capstone 项目,它需要在数据库中存储一些遥测数据。我将 PostgreSQL 9.5 用于数据库和服务器节点。
我的问题是,当我尝试从服务器发送查询时,出现查询错误 [错误:连接已终止]。如果我使用 JSON.stringify(err)
,我只会看到空括号作为结果 {}
。有趣的是,如果我使用 pgAdmin 客户端并执行相同的查询,则记录添加成功,没有任何错误。
这是我在服务器中用来发送查询的代码:
client.connect(function(err) {
if(err){
return console.error('could not connect to postgres', err);
}
//Checks if there is survey data to process
if(surveyFlag){
//Query to insert survey record
//Returns survey record's auto-generated id to use it when creating or updating the //telemetry record in the database
var query = 'INSERT INTO survey_response (perceived_risk, actual_risk) '+
'VALUES (' + telemetryRecord.survey.perceivedRisk +', ' +
telemetryRecord.survey.actualRisk +') ' +
'RETURNING survey_id';
client.query(query, function(err, result) {
console.log("Query: " + query);
if(err) {
console.log(err);
return console.error('error running survey query', err);
}
surveyID = result.rows[0].survey_id;
//Testing
console.log ("Survey response added with ID: " + surveyID);
});
//Close the connection
client.end();
});
代码client.end()
与代码client.query()
放在同一层。由于 client.query()
是异步的,因此 client.end()
会在您开始查询后立即被调用。当查询返回时,客户端已经结束,这是导致问题的原因。
尝试将 client.end()
代码放在 client.query()
的回调函数中。
client.query(query, function(err, result) {
console.log("Query: " + query);
if(err) {
console.log(err);
return console.error('error running survey query', err);
}
surveyID = result.rows[0].survey_id;
//Testing
console.log ("Survey response added with ID: " + surveyID);
//Close the connection
client.end();
});