通过 node.js 连接到 mysql 时出现未知数据库错误

Posted

技术标签:

【中文标题】通过 node.js 连接到 mysql 时出现未知数据库错误【英文标题】:I'm getting unknown database error while connecting to mysql through node.js 【发布时间】:2021-08-19 15:30:12 【问题描述】:

PS G:\boot> 节点 hello.js 在 http://localhost:3000 监听的示例应用程序 G:\boot\node_modules\mysql\lib\protocol\Parser.js:437 抛出错误; // 重新抛出非 MySQL 错误 ^

错误:ER_BAD_DB_ERROR:未知数据库“启动” 在 Handshake.Sequence._packetToError (G:\boot\node_modules\mysql\lib\protocol\sequences\Sequence.js:47:14) 在 Handshake.ErrorPacket (G:\boot\node_modules\mysql\lib\protocol\sequences\Handshake.js:123:18) 在 Protocol._parsePacket (G:\boot\node_modules\mysql\lib\protocol\Protocol.js:291:23) 在 Parser._parsePacket (G:\boot\node_modules\mysql\lib\protocol\Parser.js:433:10) 在 Parser.write (G:\boot\node_modules\mysql\lib\protocol\Parser.js:43:10) 在 Protocol.write (G:\boot\node_modules\mysql\lib\protocol\Protocol.js:38:16) 在套接字。 (G:\boot\node_modules\mysql\lib\Connection.js:88:28) 在套接字。 (G:\boot\node_modules\mysql\lib\Connection.js:526:10) 在 Socket.emit (events.js:376:20) 在 addChunk (internal/streams/readable.js:309:12) -------------------- 在 Protocol._enqueue (G:\boot\node_modules\mysql\lib\protocol\Protocol.js:144:48) 在 Protocol.handshake (G:\boot\node_modules\mysql\lib\protocol\Protocol.js:51:23) 在 Connection.connect (G:\boot\node_modules\mysql\lib\Connection.js:116:18) 在对象。 (G:\boot\hello.js:22:12) 在 Module._compile (internal/modules/cjs/loader.js:1068:30) 在 Object.Module._extensions..js (internal/modules/cjs/loader.js:1097:10) 在 Module.load (internal/modules/cjs/loader.js:933:32) 在 Function.Module._load (internal/modules/cjs/loader.js:774:14) 在 Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12) 在内部/main/run_main_module.js:17:47 代码:'ER_BAD_DB_ERROR', 错误号:1049, sqlMessage: "未知数据库'启动'", sqlState: '42000', 致命:真实

代码是

const express = require('express')
var mysql = require('mysql')
const bodyParser = require('body-parser')
const app = express()
const port = 3000
// app.use(express.static('css'))

app.use(bodyParser.urlencoded( extended: false ))
app.set('view engine', 'pug')

app.get('/', function (req, res) 
  res.sendFile('signup.html',  root: __dirname )
);

var connection = mysql.createConnection(
  host: 'localhost',
  user: 'root',
  password: '',
  database: 'boot'
);

connection.connect(function (err) 
  if (err) throw err;

  console.log('Connected.........')
)

connection.end();

app.post('/submit', function (req, res) 
  console.log(req.body);
  res.render('index', 
    title: 'Data saved',
    message: 'Data saved successfully'
  )
)

app.listen(port, () =>
  console.log(`Example app listening at http://localhost:$port`)
)
```[enter image description here][1]


  [1]: https://i.stack.imgur.com/hRNXp.png

【问题讨论】:

sqlMessage 正是它所说的。没有boot 数据库。 @danblack phpmyadmin 中有boot 数据库。在此创建了一个表。 【参考方案1】:

ER_BAD_DB_ERROR: Unknown database 'boot 错误是从您的 MySQL 服务器返回的。这意味着您在本地托管的 MySQL 服务器没有名称为 boot 的数据库,或者 root 用户无权访问该数据库。

建议您在重新运行应用之前仔细检查您是否已使用 boot 名称启动数据库

【讨论】:

其他以前创建的数据库显示相同的错误。用户名root 也是正确的 您可以尝试删除database 参数并查看新的错误吗? 你是否也可以尝试在选项中添加端口,你可能没有使用默认端口进行数据库连接 现在我知道问题所在了。我正在使用 wampp ,所以在 wampp 我有 2 个服务器,即MySqlMariaDB。连接到 mariaDB 而不是 Mysql。如果您看到代码,它是 var connection = mysql.createConnection 而不是 MariaDB。它仍然连接到 MariaDB。帮我解决这个问题

以上是关于通过 node.js 连接到 mysql 时出现未知数据库错误的主要内容,如果未能解决你的问题,请参考以下文章

尝试将客户端连接到服务器时出现Node.js Socket.io错误

尝试将 node.js unix 套接字客户端连接到 C 程序时出现 EPROTOTYPE 错误

从 Heroku 上的 Node.js 连接到 CloudSQL

无法连接到 mySQL 服务器,Windows 10/Node.js

Node.js 连接到 MySQL Docker 容器 ECONNREFUSED

Node.js - 连接到 MySQL 数据库服务器