如何让我的 AWS MYSQL 池连接到 node.js

敏捷的礼物

我得到:错误:错误:ER_BAD_DB_ERROR:未知数据库,当尝试通过连接池连接到我的 AWS MySql 数据库时。

我已经三重检查了数据库凭据,所以这必须是语法上的或有条理的。

数据库是亚马逊网络服务上的 MySql RDS,我在节点 js 上使用 express 中间件。

服务器.js

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

const port = process.env.PORT || 3000;
const dev = process.env.NODE_ENV !== 'production';
const app = next({ dev });
const handle = app.getRequestHandler();

const cors = require('cors');
const bodyParser = require('body-parser');
const mysql = require('mysql');
const pool = require('../lib/db');

app.prepare().then(() => {
  const server = express()
  server.use(cors());

  server.get('/', (req, res, next) => {
    let sql = 'SELECT * FROM products'
    pool.query(sql, (err, result, fields) => {
        if (err) {
          throw new Error(err);
        }
          return result.json({
                data: rows
          })
        }
    )
})

...

数据库.js

const mysql = require('mysql');
const pool = mysql.createPool({
    connectionLimit: 10,
    host: 'XXX',
    user: 'XXX',
    password:'XXX',
    database: 'XXX'
})


pool.getConnection((err, connection) => {
    if (err) {
        if (err.code === 'PROTOCOL_CONNECTION_LOST') {
            console.error('Database connection was closed.')
        }
        if (err.code === 'ER_CON_COUNT_ERROR') {
            console.error('Database has too many connections.')
        }
        if (err.code === 'ECONNREFUSED') {
            console.error('Database connection was refused.')
        }
    }    if (connection) connection.release()    

    return
})
module.exports = pool
敏捷的礼物

因此,作为 Node.js 和 MySql 的新手,我对自己的语法没有应有的自信。这是一个有条不紊的问题。

创建连接池时,必须有数据库的名称。出于某种原因,AWS 会为您提供一个“数据库实例”并为 DBName 放置“-”。因此我认为它们具有相同的价值。

我用 MySQL Workbench 提取了 Database Name,这和我在 Amazon.1 上输入的 DB Instance 完全不同

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章