我得到:错误:错误: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] 删除。
我来说两句