Nu am avut niciodată această problemă când am fost pe Windows.
Din anumite motive, nu pot obține niciun efect atunci când încerc să mă conectez la o bază de date MySQL locală dintr-o aplicație locală Node.js.
Totul funcționează urmăribil în cod până la încercarea de conectare la MySQL.
Și totul funcționează bine (presupunând că este inserată o atribuire stub pentru a înlocui rezultatul lipsă din apelul MySQL) după conexiunea MySQL.
M-am uitat în zadar la jurnalele de sistem și la jurnalele MySQL pentru orice indiciu. Căutarea pe Google pe Google se sugerează uneori că MySQL poate refuza o conexiune prin rețea, ci mai degrabă folosește o conexiune socket. Am ajustat parametrii de conexiune în consecință (fără port: ...., am adăugat un socketPath: ....., intrare) dar nu am mers mai bine.
Mai jos este codul de testare de bază pentru
const mysql = require('mysql');
const queryNodeAppData = (interogare) =>
{
console.log(„În scriptul MySQL Query acum...”)
console.log("Interogare: " + interogare);
const con = mysql.createConnection(
{
gazdă: „localhost”,
socketPath: „/var/run/mysqld/mysqld.sock”,
baza de date: "nodeapp",
utilizator: „rădăcină”,
parola: „My.$qu3@1$y”
});
con.connect(funcție(errconn)
{
dacă (errconn)
{
console.error('Eroare la conectare: ' + errconn.stack);
returnează „Invalid”;
}
altfel
{
console.log('Conectat ca id' + connection.threadId);
returnează „Valid;”
}
});
};
module.exports = { queryNodeAppData };
Ieșirea terminalului corespunzătoare după ce ați încercat să rulați aplicația cu nodemon este dedesubt.
Jurnalele de consolă sunt făcute pe măsură ce sarcina utilizatorului este delegată de app.js altor module, de ex. router, handler, format-checker, mysql, etc. Ieșirile sunt uneori înregistrate.
Eventualele erori care blochează aplicația se datorează doar încercării de a scrie o valoare nedefinită într-o variabilă de răspuns XHR definită de text. Închiderea răspunsului cu orice șir face ca aplicația să returneze un cod de stare 200 și nicio eroare.
[nodemon] pornește `node app.js`
Serverul HTTP pentru NodeApp a pornit la portul 3000
Suntem în partea din spate a NodeApp!
Cineva a POSTAT date pe serverul Node...
Punct final tăiat URL: reg-user
Valoare de intrare: tamjk
În router.js acum...
Punct final: reg-user Date: tamjk
Handler: authen.js
În handler authen.js acum...
Mod: reg Câmp: utilizator Valoare: tamjk
În validarea formatului acum...
Mesaj de validare a formatului: format valid
Se conectează la baza de date cu date utilizator, verifică utilizatorul...
În scriptul MySQL Query acum...
Interogare: SELECT user FROM users WHERE user = 'tamjk'
Routerul a returnat mesaj nedefinit
Mesaj de apel invers: nedefinit
Mesaj: nedefinit
Răspuns trimis înapoi: nedefinit
_http_outgoing.js:696
aruncă ERR_INVALID_ARG_TYPE nou („primul argument”,
^
TypeError [ERR_INVALID_ARG_TYPE]: primul argument trebuie să fie de tip șir sau o instanță de Buffer sau Uint8Array. Primit nedefinit
la write_ (_http_outgoing.js:696:11)
la ServerResponse.write (_http_outgoing.js:661:15)
la reqCallback (/home/sandbar/Desktop/nodeapp-local/app.js:116:6)
la IncomingMessage.<anonymous> (/home/sandbar/Desktop/nodeapp-local/app.js:87:10)
la IncomingMessage.emit (events.js:327:22)
la endReadableNT (_stream_readable.js:1327:12)
la processTicksAndRejections (intern/process/task_queues.js:80:21) {
cod: „ERR_INVALID_ARG_TYPE”
}
Aplicația [nodemon] s-a prăbușit - se așteaptă modificări ale fișierului înainte de a începe...
Pe lângă problema de mai sus, am început să nu cooperez atunci când încerc să accesez baza de date MySQL din terminal.
$ sudo mysql
[sudo] parola pentru bara de nisip:
EROARE 1045 (28000): Acces refuzat pentru utilizatorul „rădăcină” @ „localhost” (folosind parola: NU)
Una peste alta, mă întreb dacă Ubuntu 20.04.2 și MySQL 8.0.27 sunt într-adevăr făcute pentru a funcționa împreună.