我正在嘗試在 nodejs 中使用 mysql 模塊創建資料庫,但是在創建表并插入一些資料后,當我嘗試 SELECT 并回傳結果時,我面臨致命錯誤!
D:\Programming\Farahani App\App>node mysql.js
Error: Cannot enqueue Query after fatal error.
at Protocol._validateEnqueue (D:\Programming\Farahani App\App\node_modules\mysql\lib\protocol\Protocol.js:212:16)
at Protocol._enqueue (D:\Programming\Farahani App\App\node_modules\mysql\lib\protocol\Protocol.js:138:13)
at Connection.query (D:\Programming\Farahani App\App\node_modules\mysql\lib\Connection.js:198:25)
at Handshake.<anonymous> (D:\Programming\Farahani App\App\mysql.js:28:13)
at Handshake.<anonymous> (D:\Programming\Farahani App\App\node_modules\mysql\lib\Connection.js:526:10)
at Handshake._callback (D:\Programming\Farahani App\App\node_modules\mysql\lib\Connection.js:488:16)
at Handshake.Sequence.end (D:\Programming\Farahani App\App\node_modules\mysql\lib\protocol\sequences\Sequence.js:83:24)
at Protocol.handleNetworkError (D:\Programming\Farahani App\App\node_modules\mysql\lib\protocol\Protocol.js:369:14)
at Connection._handleNetworkError (D:\Programming\Farahani App\App\node_modules\mysql\lib\Connection.js:418:18)
at Socket.emit (node:events:390:28) {
code: 'PROTOCOL_ENQUEUE_AFTER_FATAL_ERROR',
fatal: false
}
undefined
[如果相關,mysql 正在我的 xampp 中運行...]
感謝你的幫助。
我的代碼:
const mysql = require('mysql');
const data = {
host: "localhost",
user: "user",
password: "password",
database: "mydb"
}
const con = mysql.createConnection(data)
con.connect(() => {
// create database
con.query('CREATE DATABASE mydb', () => {
})
// create table
const table = "CREATE TABLE customers (name VARCHAR(255), address VARCHAR(255))";
con.query(table, () => {
})
// add val to table
const val1 = "INSERT INTO customers (name, address) VALUES ('Company Inc', 'Highway 37')";
con.query(val1, () => {
})
// log results
con.query("SELECT * FROM customers", (err,result)=>{
if(err) {console.log(err)};
console.log(result);
})
con.end();
})
uj5u.com熱心網友回復:
您的代碼有兩個問題。主要問題是您不能在 mysql 中為每個連接執行多個查詢。
您可以使用連接池來簡化管理。
其次,您應該檢查回呼中的錯誤。這將有助于除錯并使您的代碼更加健壯。
con.query("select * from my_table", (error, results, fields) => {
if (error) throw error;
console.log(results);
});
uj5u.com熱心網友回復:
const mysql = require('mysql');
const con = mysql.createPool({
host: "localhost",
user: "user",
password: "password",
database: "mydb"
});
// create database
con.query('CREATE DATABASE mydb', (err) => {
if(err) {console.log(err)};
})
// create table
const table = "CREATE TABLE customers (name VARCHAR(255), address VARCHAR(255))";
con.query(table, (err) => {
if(err) {console.log(err)};
})
// add val to table
const val1 = "INSERT INTO customers (name, address) VALUES ('Company Inc', 'Highway 37')";
con.query(val1, (err) => {
if(err) {console.log(err)};
})
// log results
con.query("SELECT * FROM customers", (err,result)=>{
if(err) {console.log(err)};
console.log(result);
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/405621.html
標籤:
