gpt4 book ai didi

mysql - 错误 : Cannot enqueue Handshake after already enqueuing a Handshake

转载 作者:太空宇宙 更新时间:2023-11-03 11:31:42 25 4
gpt4 key购买 nike

我正在从不同来源获取新闻提要并添加到数据库,但我遇到异常

Error: Cannot enqueue Handshake after already enqueuing a Handshake. at Protocol._validateEnqueue (/home/vikas/node_modules/mysql/lib/protocol/Protocol.js:210:16) at Protocol._enqueue (/home/vikas/node_modules/mysql/lib/protocol/Protocol.js:139:13) at Protocol.handshake (/home/vikas/node_modules/mysql/lib/protocol/Protocol.js:52:23) at Connection.connect (/home/vikas/node_modules/mysql/lib/Connection.js:130:18) at storeNewsFeedsInDB (/home/vikas/NodeJS Practice/fetchNews.js:42:7) at newsapi.v2.everything.then.response (/home/vikas/NodeJS Practice/fetchNews.js:33:9) at tryCatcher (/home/vikas/node_modules/bluebird/js/release/util.js:16:23) at Promise._settlePromiseFromHandler (/home/vikas/node_modules/bluebird/js/release/promise.js:512:31) at Promise._settlePromise (/home/vikas/node_modules/bluebird/js/release/promise.js:569:18) at Promise._settlePromise0 (/home/vikas/node_modules/bluebird/js/release/promise.js:614:10) at Promise._settlePromises (/home/vikas/node_modules/bluebird/js/release/promise.js:693:18) at Async._drainQueue (/home/vikas/node_modules/bluebird/js/release/async.js:133:16) at Async._drainQueues (/home/vikas/node_modules/bluebird/js/release/async.js:143:10) at Immediate.Async.drainQueues (/home/vikas/node_modules/bluebird/js/release/async.js:17:14) at runCallback (timers.js:637:20) at tryOnImmediate (timers.js:610:5)

下面是我的代码

const NewsAPI = require('newsapi');
const newsapi = new NewsAPI('*****************************');

var mysql = require('mysql');
var con = mysql.createConnection({
host: "****",
user: "****",
password: "****",
database: "****"
});

var channels = ['bbc-news', 'the-verge', 'reuters', 'cnbc', 'bloomberg', 'economist', 'nytimes'];
var topics = ['technology', 'business', 'finance', 'tech', 'economics', 'company'];

for (var i = 0; i < channels.length; i++) {
for (var j = 0; j < topics.length; j++) {
newsapi.v2.everything({
q: topics[j],
// q: 'technology',
sources: channels[i],
// sources: 'bloomberg',
// domains: 'bbc.co.uk, techcrunch.com',
from: '2018-03-14',
to: '2018-03-14',
language: 'en',
sortBy: 'relevancy',
pageSize:100,
page: 1
}).then(response => {
// console.log(response);
for (var i = 0; i < response.articles.length; i++) {
// console.log(response.articles[i].title);
storeNewsFeedsInDB(response.articles[i].title,
response.articles[i].description,
response.articles[i].url);
}
});
}
}

function storeNewsFeedsInDB(title, description, url) {
con.connect(function(err) {
if (err) throw err;
console.log("Connected!");

//Insert a record in the "newsfeeds" table:
var sql = "INSERT IGNORE INTO newsfeeds (`title`, `description`, `url`) VALUES ('"
+ title.replace(/'/g, "\\'") + "', '" + description.replace(/'/g, "\\'") + "', '" + url + "')";
console.log(sql);
con.query(sql, function (err, result) {
if (err) throw err;
console.log("1 record inserted");
});
});
}

Nodejs 和 Mysql 新手,请帮助我。

最佳答案

您正在从(嵌套)循环内部调用 storeNewsFeedsInDB,每次访问它时您都会调用 con.connect,这就是您收到“排队握手”错误的原因.看看one of mysql npm package test suites可以揭示,因为一旦进行了两次连续的 con.connect 调用就会抛出错误。

您只需从代码中删除 con.connect 调用即可,因为任何 query 调用都会隐式建立连接,as the docs say .

关于mysql - 错误 : Cannot enqueue Handshake after already enqueuing a Handshake,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49276452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com