NodeJS进程退出不是运行SQL查询
NodeJS process exit is not running SQL query
下面的 NodeJS 应用 运行 完全没有 process.exit() 当我添加 process.exit() 它在执行后关闭 window在之后)但它没有执行 SQL 查询。
var mysql = require('mysql')
var conn = mysql.createPool({
connectionLimit : 10000,
host: "localhost",
user: "root",
password: "password",
database: "mydatabase",
port: 3306
});
var values = ""
for (var i=0; i < 300; i++) {
var pub = //some randomvalue
var hub = //some randomvalue
values += "('"+pub + "', '" + hub + "'), "
console.log(i);
}
var valuesx = values.slice(0, -2)
var sql = "INSERT INTO `test` (pub, hub) VALUES "
var sqlx = sql + valuesx;
conn.getConnection(function(err, con) {
if (err) throw err
con.query(sqlx)
con.release();
});
process.exit(0)
以上代码没有插入到MySQL
如果我删除 process.exit(0) 它会插入 MySQL
试试这个:
conn.getConnection(function(err, con) {
if (err) throw err
con.query(sqlx, function (err2, result) {
if (err2) throw err;
con.release();
process.exit(0)
// you should put these inside this callback
})
});
在查询完成之前,您不需要调用 process.exit()
,方法是将调用移到查询的完成回调中。您还需要在错误处理方面做一些工作,以便在出现错误时记录错误并正确清理:
conn.getConnection(function(err, con) {
// need real error handling here too as just a throw err won't do anything useful
if (err) {
console.log(err);
process.exit(1);
}
con.query(sqlx, function(err, data) {
let exitCode = 0;
if (err) {
console.log(err);
exitCode = 2;
}
con.release();
process.exit(exitCode);
});
});
下面的 NodeJS 应用 运行 完全没有 process.exit() 当我添加 process.exit() 它在执行后关闭 window在之后)但它没有执行 SQL 查询。
var mysql = require('mysql')
var conn = mysql.createPool({
connectionLimit : 10000,
host: "localhost",
user: "root",
password: "password",
database: "mydatabase",
port: 3306
});
var values = ""
for (var i=0; i < 300; i++) {
var pub = //some randomvalue
var hub = //some randomvalue
values += "('"+pub + "', '" + hub + "'), "
console.log(i);
}
var valuesx = values.slice(0, -2)
var sql = "INSERT INTO `test` (pub, hub) VALUES "
var sqlx = sql + valuesx;
conn.getConnection(function(err, con) {
if (err) throw err
con.query(sqlx)
con.release();
});
process.exit(0)
以上代码没有插入到MySQL
如果我删除 process.exit(0) 它会插入 MySQL
试试这个:
conn.getConnection(function(err, con) {
if (err) throw err
con.query(sqlx, function (err2, result) {
if (err2) throw err;
con.release();
process.exit(0)
// you should put these inside this callback
})
});
在查询完成之前,您不需要调用 process.exit()
,方法是将调用移到查询的完成回调中。您还需要在错误处理方面做一些工作,以便在出现错误时记录错误并正确清理:
conn.getConnection(function(err, con) {
// need real error handling here too as just a throw err won't do anything useful
if (err) {
console.log(err);
process.exit(1);
}
con.query(sqlx, function(err, data) {
let exitCode = 0;
if (err) {
console.log(err);
exitCode = 2;
}
con.release();
process.exit(exitCode);
});
});