当前位置: 首页 > 知识库问答 >
问题:

NodeJS进程出口未运行SQL查询

赫连心思
2023-03-14

下面的NodeJS应用程序在没有process.exit()的情况下运行得非常好,当我添加process.exit()时,它在执行后关闭窗口(这是我想要的),但它不执行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

共有2个答案

唐烨煜
2023-03-14

在查询完成之前,您不需要调用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);
    });
});
秦鸿羽
2023-03-14

试试看:

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
 })
 
});

 类似资料:
  • 我想用nodejs打开googlechrome,但我得到了这个错误(我使用了execFile和spawn), 密码

  • 以下是Liquibase输入文件: --更改集dank:1 runalways=true failonerror:false 删除表aaa_schema.foo IBM错误代码-104是关于语法问题的。根据查看错误消息,我猜测它与行尾字符“;”有关。但是我已经尝试了使用分号和不使用分号的查询。IBM自己的db2也接受分号,因此它似乎是一个有效的选择。 非常感谢在找出此错误原因方面的任何帮助。

  • 我遇到了一个奇怪的问题,使用Oracle Pivot语法的sql查询。我可以毫无问题地在SqlDeveloper中运行查询;然而,使用行映射器通过JdbcTemplate运行它会产生关于无效列名的奇怪错误。 SQL语句: 行映射器: DAO调用类:

  • 问题内容: 我正在尝试通过NodeJS子进程在Windows上运行命令: 当它调用时,它将其写入描述符,但是此时我如何触发响应?当您实际在命令提示符下键入命令时,如何发送“输入”键信号?目前我没有收到任何回应。 问题答案: 发送换行符将执行该命令。将退出外壳。 我在OSX上修改了该示例以使其与bash一起使用。 输出将是:

  • 创建进程 本章开始时演示了Hello World程序,其实已经创建了新的进程,通过Bash或者zsh这些Shell很容易创建新的进程,但Shell本身是怎么实现的呢?我们又能不能用Go实现类似Shell的功能呢? 系统调用 原来这一切都是操作系统给我们做好的,然后暴露了使用的API接口,这就是系统调用。Linux或者其他Unix-like系统都提供了fork()和exec()等接口,Bash或者我

  • 本文向大家介绍Oracle中查看正在运行的SQL进程脚本分享,包括了Oracle中查看正在运行的SQL进程脚本分享的使用技巧和注意事项,需要的朋友参考一下 Oracle的show processlist Oracle show full processlist