【问题标题】:ConnectionError: Connection lost - read ECONNRESET in protractorConnectionError:连接丢失 - 在量角器中读取 ECONNRESET
【发布时间】:2019-03-26 04:19:27
【问题描述】:

我正在使用量角器 52.2 和黄瓜 3.2.2。我正在使用 selenium 网格(selenium-server-standalone-3.14.0.jar)和量角器,并在 4 个不同节点的 4 个浏览器中运行我的脚本。我在数据库中有一个 600 行的表。最初,我正在访问该表中的数据并通过量角器脚本输入每一行的数据,并在成功输入每一行后更新 DB 列。但是在成功输入一些行后,量角器脚本突然以错误“ConnectionError: Connection lost - read ECONNRESET in protractor”结束。我在更新 SQL 查询中收到一条错误消息,即“RequestError: Resource ID: 1. The request limit for the database is 60 并且已达到。请参阅“http://go.microsoft.com/fwlink/?LinkId=267637”寻求帮助。”我正在使用的更新查询如下(我正在使用 azure sql)。我不清楚如何解决这个问题。提前致谢。

var Connection = require('tedious').Connection;
var Request = require('tedious').Request;
var config = 
{
 userName: 'xxx', 
 password: 'xxxxx', 
 server: 'xxxxxx', 
 options: 
    {
       database: 'xxx' ,
       encrypt: true,
       rowCollectionOnRequestCompletion: true
    }
}
var connection = new Connection(config);

defineSupportCode(function ({ setDefaultTimeout, Given, When, Then }) {
 setDefaultTimeout(30000 * 1000);
   function updatedb(LPAID){
      request = new Request("UPDATE COM_Location_Post with (rowlock) SET IsPublished = 1 WHERE Id ="+LPAID,function(err,rowCount, rows) { 
        if(err){
          console.log(err)
         }
      });
     connection.execSql(request);
  }
});

【问题讨论】:

    标签: protractor azure-sql-database cucumberjs selenium-grid2


    【解决方案1】:

    您没有在脚本中使用连接关闭。

    根据你的问题,在你遇到这个问题之后,它就很清楚了。

    每次交易都尝试关闭连接。

        (async () => {
                const config = {
                    user: 'User',
                    password: 'iPg$',
                    server: 'cp-sql',
                    database: 'DBI',
                    options: {
                        encrypt: true // Use this if you're on Windows Azure
                    }
                }
                try {
    
                    let pool = await sql.connect(config)
                    var envcode, testcode;
                    let result1 = await pool.request()
                        .query(`query 1 goes here`)
                    // console.dir(result1)
                    pool.close();
                    sql.close();
                    let pool1 = await sql.connect(config)
                    let result2 = await pool1.request()
                        .query(`query 2 goes here`)
                    // console.dir(result2)
                    pool1.close();
                    sql.close();
                    resolve(result2);
                } catch (err) {
                    console.log(err)
                }
            })()
    

    【讨论】:

    • 感谢您的回复..您能否分享我如何在此查询中使用连接关闭。
    • 编辑了答案@devleena。执行查询后,您应该获得对连接的类型支持尝试查看连接是否显示方法 close()。
    • 显示我的记录集后,我使用 conn.close 终止连接实例。
    • 我在我的 sql 查询中使用连接关闭作为 connection.on('connect', function (err) { if (err) { reject(err); connection.close(); }else { request1 = new Request("EXEC [usp_GetPostDetails_Automation] "+clientID+"," + thread, function (err, rowCount, rows) { if (err) { reject(err); connection.close(); }else { resolve('完成'); connection.close(); } }); connection.execSql(request1); } });这个成功执行了,但是当我尝试像这样连接下一个查询时,它没有执行下一个查询。
    • 执行第一个查询后,进程退出。那么我们是否有另一种语法来重新连接?通过使用'connection.on',它在第二次不起作用。你有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-18
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多