Node.js ialah bahasa pengaturcaraan bahagian pelayan yang cekap, pantas dan boleh dipercayai, yang boleh mencapai pengemaskinian masa nyata dan pemprosesan data bahagian pelayan dengan sangat baik. MySQL ialah sistem pengurusan pangkalan data hubungan yang digunakan secara meluas dalam bidang penyimpanan data Internet dan perisian peringkat perusahaan. Gabungan Node.js dan MySQL boleh mencapai storan dan pengurusan data sebelah pelayan, tetapi beberapa masalah mungkin dihadapi semasa proses pembangunan sebenar. Artikel ini akan memperkenalkan masalah biasa: ralat node.js dalam menyambung ke MySQL.
1. Prestasi ralat
Apabila kami menggunakan Node.js untuk menyambung ke MySQL, kami mungkin menghadapi prestasi ralat berikut:
- Ralat: sambungkan ETIMEDOUT
- Ralat: sambungkan ECONNREFUSED
- Ralat: ER_ACCESS_DENIED_ERROR
- Ralat: Tidak boleh beratur Berjabat tangan selepas memohon berhenti
2.>
2 🎜>
Tamat masa sambungan-
Ralat: sambung ETIMEDOUT
Ralat ini biasanya disebabkan oleh tamat masa sambungan rangkaian, kerana pelayan MySQL kami mungkin tidak dapat membalas permintaan atau permintaan sambungan pengguna Agak perlahan. Apabila Node.js menyambung ke MySQL, anda perlu menentukan masa tamat masa sambungan dan mewujudkan sambungan dalam masa yang ditentukan, jika tidak ralat sambungan ETIMEDOUT akan dilaporkan.
Sambungan ditolak-
Ralat: sambung ECONNREFUSED
Ralat ini biasanya disebabkan oleh tetapan parameter yang salah berkaitan dengan penyambungan ke MySQL, seperti nama hos , nama pengguna, kata laluan, dsb. Ralat ini biasanya berlaku apabila menyambung ke pelayan dari jauh Ia mungkin kerana pelayan telah menyediakan tembok api atau menyatakan bahawa hanya alamat IP atau segmen rangkaian tertentu boleh menyambung ke MySQL.
Pengesahan kebenaran gagal-
Ralat: ER_ACCESS_DENIED_ERROR
Ralat ini biasanya disebabkan oleh nama pengguna atau input kata laluan yang salah, kebenaran tidak mencukupi atau pelayan melarang tertentu Disebabkan kebenaran tertentu. Ralat ini akan berlaku semasa menyambung ke MySQL jika nama pengguna atau kata laluan yang dimasukkan tidak betul; ralat ini juga akan berlaku apabila pengguna tidak mempunyai kebenaran yang mencukupi untuk mengakses pangkalan data.
Ralat Aplikasi-
Ralat: Tidak boleh membuat giliran Jabat Tangan selepas memohon berhenti
Ralat ini biasanya disebabkan oleh ralat aplikasi dan mungkin disebabkan oleh MySQL sambungan telah ditutup sebelum aplikasi keluar. Dalam kes ini, kita perlu menyemak dengan teliti sama ada sambungan dalam kolam sambungan ditutup dengan betul atau sama ada terdapat masalah lain.
3. Penyelesaian ralat
Tamat masa sambungan-
Untuk mengelakkan ralat tamat masa sambungan, kami perlu menetapkan masa menunggu semak dan tempoh tamat masa Sambungan . Biasanya, kami akan menetapkan ini dalam julat 5 saat hingga 10 saat. Berikut ialah contoh coretan kod untuk disambungkan ke MySQL:
const mysql = require('mysql');
const connection = mysql.createConnection({
hos : 'localhost' ,
pengguna : 'root',
kata laluan : 'kata laluan',
pangkalan data : 'mydatabase',
connectTimeout: 10000,
acquireTimeout: 10000
});
connection.connect((err) => {
if (err) throw err;
console.log('Connected!');
});
Sambungan ditolak -
Ralat penolakan sambungan boleh diselesaikan dengan menetapkan nama hos, nama pengguna dan kata laluan yang betul. Jika kami menyambung ke pelayan jauh, kami perlu memastikan bahawa alamat IP dan nombor port sambungan adalah betul, dan pelayan itu tidak mempunyai tembok api yang ditetapkan atau menyekat akses kepada alamat IP atau segmen rangkaian tertentu. Berikut ialah contoh coretan kod untuk disambungkan ke MySQL:
const mysql = require('mysql');
const connection = mysql.createConnection({
hos : 'remote- pelayan. com',
port : '3306',
pengguna : 'root',
kata laluan : 'kata laluan',
pangkalan data : 'mydatabase'
});
connection.connect((err) => {
if (err) throw err;
console.log('Connected!');
});
Pengesahan Kebenaran gagal-
Jika kami menghadapi ralat kegagalan pengesahan kebenaran semasa menyambung ke MySQL, kami perlu memastikan bahawa nama pengguna dan kata laluan yang dimasukkan adalah betul dan bahawa pengguna mempunyai kebenaran untuk mengakses pangkalan data. Jika kami menggunakan pengguna root, kami perlu ambil perhatian bahawa pelayan MySQL mungkin telah menetapkan peraturan yang hanya log masuk ke hos tertentu untuk menggunakan akaun root.
Ralat Aplikasi-
Jika kami menghadapi ralat aplikasi semasa menyambung ke MySQL, kami perlu menyemak sama ada sambungan dalam kumpulan sambungan ditutup dan soalan lain yang mungkin. Berikut ialah contoh kod yang boleh digunakan untuk menutup kolam sambungan dengan betul:
const mysql = require('mysql');
const pool = mysql.createPool({
connectionLimit : 10,
hos : 'localhost',
pengguna : 'root',
kata laluan : 'kata laluan',
pangkalan data : 'mydatabase'
});
pool.getConnection ((err , connection) => {
console.log('connected as id', connection.threadId);
connection.query('SELECT * FROM users', function (ralat, keputusan , medan) {
if (error) throw error;
console.log('The solution is: ', results);
// Connection is automatically released when query resolves
connection.release();
Salin selepas log masuk
});
});
Kesimpulannya, Node.js menyambung kepada ralat MySQL boleh menjadi tugas yang sukar, tetapi selagi kita dapat mengenal pasti punca masalah dan cuba menyelesaikannya, maka kita boleh menyelesaikan masalah ini dengan cepat. Apabila kami menghadapi masalah semasa pembangunan, kami boleh mencari masalah dan menyelesaikannya dengan menyahpepijat dan menguji kod, yang boleh membantu kami membina aplikasi yang lebih dipercayai dan cekap.
Atas ialah kandungan terperinci Ralat mysql sambungan Nodejs. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!