【问题标题】:Why mysql Connection to database doesn't work? [Node.js]为什么mysql连接到数据库不起作用? [节点.js]
【发布时间】:2017-11-01 19:52:43
【问题描述】:

这是连接 mysql 以从 node.js 创建数据库的代码 但它不起作用! 为什么这条线不能执行?

 console.log("database created");

这是我的代码:

const express = require('express');
const mysql = require('mysql');

const app = express();


const connection = mysql.createConnection({
    host: '127.0.0.1',
    port: 5000,
    user: 'root',
    password: 'password'

});



connection.query('CREATE DATABASE IF NOT EXISTS test', function (err) {
    if (err) throw err;
    console.log("database created");
    connection.query('USE test', function (err) {
        if (err) throw err;
        connection.query('CREATE TABLE IF NOT EXISTS users('
            + 'id INT NOT NULL AUTO_INCREMENT,'
            + 'PRIMARY KEY(id),'
            + 'name VARCHAR(30)'
            + ')', function (err) {
            if (err) throw err;
        });
    });
});

// connection.end();


app.get('/', function (req, res) {
    res.sendFile(__dirname + '/index.html');
    console.log("send file index.html");

});


app.post('/users', function (req, res) {
    connection.query('INSERT INTO users SET ?', req.body,
        function (err, result) {
            if (err) throw err;
            res.send('User added to database with ID: ' + result.insertId);
        }
    );
});



const server = app.listen(5000, "127.0.0.1", function () {

    const host = server.address().address;
    const port = server.address().port;

    console.log("app listening at http://%s:%s", host, port)

});

【问题讨论】:

  • 尝试在 mysql 配置中提供数据库名称,如下所示:const connection = mysql.createConnection({ host: '127.0.0.1', port: 5000, user: 'root', password: 'password', database: 'dbname' });
  • @AmitSingh 它不起作用
  • @MehdiAmirafshar 检查你的mysql端口如果你没有改变,mysql的默认端口是3306
  • @MehdiAmirafshar 是的,请检查一下,因为它在默认端口号下正常工作。

标签: mysql node.js database


【解决方案1】:

我已经尝试过您的代码,但默认端口号为 mysql。数据库创建成功。

【讨论】:

  • 我收到此错误错误:在 Export._exceptionWithHostPort (util.js:1043:20) 处的 Object.exports._errnoException (util.js:1020:11) 处连接 ECONNREFUSED 127.0.0.1:3306 TCPConnectWrap.afterConnect [as oncomplete] (net.js:1086:14)
  • 不,我没有更改任何其他行。首先,您检查正在运行 mysql 的端口号。在 linux 系统上,您可以使用命令netstat -tln。类似问题可以在另一个问题中看到[stackoverflow.com/questions/42899916/…
【解决方案2】:

首先,MySQL 是否正在运行?如果是这样,跟踪 MySQL 错误日志并查看连接是否到达 MySQL 可能是值得的,如果确实如此,这些错误消息可能会提供一些指示正在发生的事情。

还可以尝试以与节点在终端上相同的方式连接到 MySQL,即在 linux 上:

mysql -u 用户 -p 密码 -h 127.0.0.1

很抱歉将其写成答案而不是评论 - 我没有足够的声望点。

【讨论】:

    猜你喜欢
    • 2021-08-30
    • 1970-01-01
    • 2016-01-31
    • 1970-01-01
    • 1970-01-01
    • 2022-01-27
    • 1970-01-01
    • 2020-03-26
    • 2018-03-29
    相关资源
    最近更新 更多