【问题标题】:Node.JS MySQL query not executing with no errorNode.JS MySQL 查询未执行且没有错误
【发布时间】:2021-08-24 23:46:01
【问题描述】:

尽管有正确的服务器凭据,但从函数调用的这段代码永远不会到达 sn-p 底部的警报,也不会提供任何错误消息,尽管包含 throw err 语句。它到达警报说“PING”,但甚至从未执行“PONG”警报。这里有什么问题?在 MySQL Workbench 中,凭据似乎是正确的,我已经使用该环境将数据插入到列中。

    alert("PING");
    //Begin SQL query
    var mysql      = require('mysql');
    var connection = mysql.createConnection({
      host     : '127.0.0.1',
      user     : 'root',
      password : 'password',
      port: 3306,
      database : 'db'
    });
    connection.connect();
    connection.query('SELECT * FROM test', function(err, rows, fields) 
    {
      if (err) throw err;
      console.log(rows[0]);
    });
    connection.end();
    alert("PONG");

【问题讨论】:

  • 节点中没有alert()函数?你是在浏览器中运行这个吗?如果是这样,您将收到使用require 的错误消息。 Node JavaScript 和浏览器 JavaScript 是不一样的。需要这样的模块并直接访问数据库只能使用节点。
  • 在终止进程之前等待输出多长时间?可能由于某种原因mysql服务器没有发回数据,你的nodejs进程只是等待它
  • @ChrisG 是的,第一个警报执行得很好。第二个警报永远不会显示,并且控制台中没有提供错误。
  • 如果我删除alert 语句并使用node test.js 从命令行运行它,代码对我来说很好。如果您看到显示的警报,则表示您在浏览器中将其作为
  • 你是怎么调用alert()和require(mysql)的?你能告诉我们更多关于你是如何运行这个脚本的吗?

标签: javascript mysql sql node.js


【解决方案1】:

将 .query() 部分作为 .connect() 函数的参数传递,如下所示:

connection.connect(function(err) {
  if err throw err;
  connection.query('SELECT * FROM test', function(err, rows, fields) {
    if (err) throw err;
    console.log(result);
    });
})

这样应该会更好。

【讨论】:

  • 删除alert 命令使 OP 的代码运行良好。
  • @ChrisG 我刚刚删除了所有警报,但它仍然无法正常工作,也不会引发任何错误。我在 React 环境中工作,我对出了什么问题感到困惑......
猜你喜欢
  • 1970-01-01
  • 2011-06-11
  • 1970-01-01
  • 1970-01-01
  • 2017-08-29
  • 2020-07-30
  • 1970-01-01
  • 1970-01-01
  • 2017-06-24
相关资源
最近更新 更多