首页 > 解决方案 > 通过 node.js 连接到 mysql 时出现未知数据库错误

问题描述

PS G:\boot> node hello.js 监听 http://localhost:3000 G:\boot\node_modules\mysql\lib\protocol\Parser.js:437 的示例应用程序 throw err; // 重新抛出非 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) 在 Socket。(G:\boot\node_modules\mysql\lib\Connection.js:88:28) 在 Socket。(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) at internal/main/run_main_module.js:17:47 { code: 'ER_BAD_DB_ERROR', errno: 1049, sqlMessage: "Unknown database 'boot'" , sqlState: '42000', 致命的: true } \boot\node_modules\mysql\lib\protocol\Protocol.js:51:23) 在 Connection.connect (G:\boot\node_modules\mysql\lib\Connection.js:116:18) 在 Object. (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) at internal/main/run_main_module.js:17:47 { code: 'ER_BAD_DB_ERROR', errno: 1049, sqlMessage: "Unknown database 'boot'" , sqlState: '42000', 致命的: true } \boot\node_modules\mysql\lib\protocol\Protocol.js:51:23) 在 Connection.connect (G:\boot\node_modules\mysql\lib\Connection.js:116:18) 在 Object. (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) at internal/main/run_main_module.js:17:47 { code: 'ER_BAD_DB_ERROR', errno: 1049, sqlMessage: "Unknown database 'boot'" , sqlState: '42000', 致命的: true }

代码是

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

标签: mysqlnode.jsexpress

解决方案


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

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


推荐阅读