因为需要扒一下期货的数据,至少做到一秒一次入库,开始使用普通的方法,发现一会程序就会停止,而且不会报错,测试发现是因为数据库连接过多的原因,数据无法入库;
第一个解决方法是试图使用长连接的方式入库,百度了一下好像并没有这个东西,
观察代码时突然发现 关闭连接的注释,就有了现在的代码,抱着试一试的心理,踏破铁鞋无觅处,成功了,记录一下
const mysql = require('mysql');
const config = {
host:'localhost',
user:'root',
password:'root',
database:'test',
};
let pool = mysql.createPool({
host: config.host,
user: config.user,
password: config.password,
database: config.database,
multipleStatements: true, //允许执行多条查询语句
});
let con = null;
function insert(sql,value = false){
if(con){
console.log('已有');
con.query(sql, value, (err, rows) => {
if (err) console.log('查询失败!');
console.log('入库成功')
console.log('时间:',_date(new Date(),"yyyy-MM-dd hh:mm:ss.S"))
// con.release(); //释放连接
});
}else{
console.log('新建');
pool.getConnection((err, connect) => {
if (err) console.log('获取连接失败!');
con = connect;
connect.query(sql, value, (err, rows) => {
if (err) console.log('查询失败!');
console.log('入库成功')
console.log('时间:',_date(new Date(),"yyyy-MM-dd hh:mm:ss.S"))
// connect.release(); //释放连接
});
});
}
}