Javascript 我能';t使用Node.js连接到我的mysql数据库(connection.connect问题)

Javascript 我能';t使用Node.js连接到我的mysql数据库(connection.connect问题),javascript,mysql,node.js,Javascript,Mysql,Node.js,我无法使用mysql节点包从Node.js连接到个人计算机上的本地mysql数据库。我的Node.js程序与mysql数据库位于同一台计算机上,因此不需要联网。我在堆栈溢出问题上尝试了多种解决方案,但似乎都不起作用 我的目录结构: project_root/ mysql/ connection.js node_modules/ .... server.js package.json connection.js的

我无法使用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 connection error”,然后打印“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

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

您确定它没有连接吗?你写了这个:

connection.js的内容如下所示,错误出现在带有“connection.connect”的行上。我知道这一点,因为运行“function(err)”的回调函数在控制台中打印“Mysql connection error”,然后打印“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
js回调函数有一个标准形式:通常

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

回调函数通常如下所示:

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

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

您确定它没有连接吗?你写了这个:

connection.js的内容如下所示,错误出现在带有“connection.connect”的行上。我知道这一点,因为运行“function(err)”的回调函数在控制台中打印“Mysql connection error”,然后打印“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
js回调函数有一个标准形式:通常

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

回调函数通常如下所示:

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

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

我的错误。代码实际上是有效的。我不知道它为什么会显示错误消息。代码显示错误消息的原因是因为回调函数就是这么做的(回调函数就是这么做的)。如果未设置
err
(例如,如果
undefined
null
),则表示没有错误。我的错误。代码实际上是有效的。我不知道它为什么会显示错误消息。代码显示错误消息的原因是因为回调函数就是这么做的(回调函数就是这么做的)。如果未设置
err
(例如,如果
未定义
null
),则表示没有错误。