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

我无法使用node.js连接到我的mysql数据库(Connection.connect问题)

壤驷向明
2023-03-14

我无法使用mysql节点包从node.js连接到我个人计算机上的本地mysql数据库。我的node.js程序与mysql数据库在同一台计算机上,因此不需要联网。我已经尝试了多个解决堆栈溢出的方法,但似乎都不起作用。

我的目录结构:

project_root/ 
    mysql/         
        connection.js
    node_modules/
        ....
    server.js
    package.json

connection.js的内容如下所示,错误出现在带有“connection.connect”的行上。我之所以知道这一点,是因为运行“function(err)”的回调函数在控制台中打印“MySQL连接错误”,然后打印“null”。

var fs = require('fs');
var mysql = require('mysql');

var connection_data = JSON.parse(fs.readFileSync('../config/mysql.json', 'utf8'));

// JSON.stringify(connection_data)
// ‌{"host":"127.0.0.1","port":3306,"user":"root","passwd":"xxxxxxxxxxx","db":"mydatabase"}

var connection = mysql.createConnection({
    host : connection_data['host'],
    user : connection_data['user'],
    password : connection_data['passwd'],
    database: connection_data['db'],
    charset: "utf8_general_ci",
    socketPath : '/tmp/mysql.sock'
});

export_connection = connection.connect(function(err) {
    console.log("Mysql connection error");
    console.log(err);
});

module.exports = export_connection

其他链接建议查看命令行中的mysql状态,如下所示。我甚至将node.js mysql连接设置为连接到状态中显示的相同套接字。

mysql> status 
--------------
mysql  Ver 14.14 Distrib 5.7.18, for osx10.12 (x86_64) using  EditLine wrapper

Connection id:      237509
Current database:   
Current user:       root@localhost
SSL:            Not in use
Current pager:      stdout
Using outfile:      ''
Using delimiter:    ;
Server version:     5.7.18 MySQL Community Server (GPL)
Protocol version:   10
Connection:     Localhost via UNIX socket
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:        /tmp/mysql.sock
Uptime:         1 day 8 hours 9 min 18 sec

请注意,connection_data['host']是127.0.0.1,connection_data['user']是root,connection_data['db']对应于现有数据库。

共有1个答案

燕刚毅
2023-03-14

你确定没接通吗?你是这样写的:

connection.js的内容如下所示,错误出现在带有“connection.connect”的行上。我之所以知道这一点,是因为运行“function(err)”的回调函数在控制台中打印“MySQL连接错误”,然后打印“null”。

node.js回调函数有一个标准形式:通常

function (err, result) { ... }

无论调用成功还是失败,都会调用回调。如果调用失败,则err将被设置为某个值(即它不是null)。在您的情况下,errnull,这表示连接成功。

回调函数通常如下所示:

function (err, result) {
    if (err) {
        // ...do something with the error, like reporting it to the
        // user or throwing an exception
        return;
    }

    // otherwise, everything is cool. Query the database (or
    // do something else)
}

在您的例子中,看起来连接实际上成功了。下一步是尝试一个查询&看看它是否起作用。如果失败,请使用错误详细信息更新您的问题。

 类似资料:
  • 我无法连接到MySQL数据库。它发生在更新MySQL和JDK之后。我添加了,但没有结果。这是我从eclipse中得到的一个例外: 不建议在没有服务器身份验证的情况下建立SSL连接。根据MySQL 5.5.45、5.6.26和5.7.6的要求,如果未设置explicit选项,默认情况下必须建立SSL连接。为了符合不使用SSL的现有应用程序,verifyServerCertificate属性设置为“f

  • 我试着用这个代码, 也许是错误的语法? 它总是得到SQLException并且不会写入日志中的任何内容... 不知道为什么会这样? 原木 03-05 14:18:33.862 8177-8177/com示例。myapplication E/YOUR_APP_LOG_TAG:我收到一个错误java.lang.ClassNotFoundException:com.mysql.jdbc。java.lan

  • 我设法将我的应用程序与HSQLDB连接起来,并使其运行良好。然而,我在将它连接到MySQL时遇到了一些麻烦。 下面是我的堆栈跟踪: 应用程序运行失败 null 我的pom.xml文件: null 这里是我的application.properties文件: 如果我没有错的话,我将MySQL用户配置为与我在ubuntu中的系统用户相同,这样我就可以用“mysql-u thalysmg”启动MySQL

  • 测试通过,即数据输入数据库,检查,一切正常。 但当我在调试模式下运行测试,在测试末尾放一个断点,尝试连接到数据库时,它是空的,连表都没有,更别提数据了。要连接,我使用dbever。在连接字符串中,我编写jdbc:h2:mem:mytestdb;db_close_on_exit=false(我尝试了jdbc:h2:tcp://localhost:9092/mem:mytestdb)。检查连接通过,写

  • 问题内容: 所以我在用Java连接MySQL时遇到问题。这是我的代码: 我得到的错误是线程“ main”中的异常 http://postimg.org/image/593stjvjx/ 在mySQL工作台中,我的连接名是“ worlddb”,主机名是Liquidus(是本地主机) 套接字是MySQL 端口:3306 为什么是这样? 问题答案: 图片中的模式与连接的名称和Database,try w

  • 我试图连接到银行,但它给出了这个错误,当我尝试: 应用程序无法启动 描述: 未能配置数据源:无法配置嵌入式数据源。 原因:未能确定合适的驱动程序级别 行动: 考虑下面的内容:如果你想要一个嵌入式数据库(H2,HSQL或DeBy),请把它放在类路径上。如果要从特定配置文件加载数据库设置,则可能需要激活它(当前没有激活的配置文件)。 我的应用程序属性: 我的pom: