Tedious: Anfragen können nur im Status "Angemeldet" gestellt werden, nicht im Status "Endgültig - Fehler".

Erstellt am 7. Jan. 2016  ·  4Kommentare  ·  Quelle: tediousjs/tedious

Hallo zusammen,

Ich habe ein Problem mit der Datenbankverbindung. Es hat eine Weile gut funktioniert, aber seit gestern habe ich diesen Fehler. Ich habe keine Idee warum.

[Anfragefehler: Anfragen können nur im eingeloggten Zustand gestellt werden, nicht im endgültigen Zustand]

connection.on('connect', function(err) {
        Console.log("-------here------");
    if(err) {
        return console.error(err); // <--
        connected = false;
    } else {
        connected = true;
    }
});

Ich denke, er kommt nicht in die Callback-Funktion von connection.on. Er druckt nichts und verbunden ist immer falsch.

Danke schön !!

Hilfreichster Kommentar

Ich bin ein Neuling in all dem, aber ich habe festgestellt, dass das Hinzufügen eines Handlers für das Verbindungs-Debug-Ereignis mir bei genau diesem Fehler geholfen hat. Ich fand heraus, dass meine Verbindung vom SQL-Server abgelehnt wurde.
connection.on('debug', function(err) { console.log('debug:', err);});

Alle 4 Kommentare

Ich habe ein ähnliches Problem.

C:\Users\Austin\Desktop\prok>node prok.js
{ [RequestError: Requests can only be made in the LoggedIn state, not the Connecting state
]
  message: 'Requests can only be made in the LoggedIn state, not the Connecting state',
  code: 'EINVALIDSTATE' }
buffer.js:506
    throw new RangeError('index out of range');
          ^
RangeError: index out of range
    at checkOffset (buffer.js:506:11)
    at Buffer.readUInt8 (buffer.js:544:5)
    at Packet.isLast (C:\Users\Austin\Desktop\prok\node_modules\tedious\lib\packet.js:121:
29)
    at ReadablePacketStream.<anonymous> (C:\Users\Austin\Desktop\prok\node_modules\tedious
\lib\message-io.js:102:18)
    at ReadablePacketStream.emit (events.js:107:17)
    at readableAddChunk (C:\Users\Austin\Desktop\prok\node_modules\tedious\node_modules\re
adable-stream\lib\_stream_readable.js:201:16)
    at ReadablePacketStream.Readable.push (C:\Users\Austin\Desktop\prok\node_modules\tedio
us\node_modules\readable-stream\lib\_stream_readable.js:165:10)
    at ReadablePacketStream.Transform.push (C:\Users\Austin\Desktop\prok\node_modules\tedi
ous\node_modules\readable-stream\lib\_stream_transform.js:133:32)
    at ReadablePacketStream._transform (C:\Users\Austin\Desktop\prok\node_modules\tedious\
lib\message-io.js:68:16)
    at ReadablePacketStream.Transform._read (C:\Users\Austin\Desktop\prok\node_modules\ted
ious\node_modules\readable-stream\lib\_stream_transform.js:172:10)

Ich verwende hier ziemlich genau die Codeform: https://azure.microsoft.com/en-us/documentation/articles/sql-database-develop-nodejs-simple-linux/

--prok.js--

var Connection = require('tedious').Connection;
var config = {
    userName: 'tester',
    password: 'tester',
    server: 'localhost',
    options: {
        port:3306
    }
};
var connection = new Connection(config);
connection.on('connect', function(err) {
// If no error, then good to proceed.
    console.log("Connected");
});
var Request = require('tedious').Request;
var TYPES = require('tedious').TYPES;
function executeStatement() {
    request = new Request("SELECT * FROM testdb.testtable;", function(err) {
    if (err) {
        console.log(err);}
    });
    var result = "";
    request.on('row', function(columns) {
        console.log('row');
        columns.forEach(function(column) {
          if (column.value === null) {
            console.log('NULL');
          } else {
            result+= column.value + " ";
          }
        });
        console.log(result);
        result ="";
    });
    request.on('done', function(rowCount, more) {
    console.log(rowCount + ' rows returned');
    });
    connection.execSql(request);
}

executeStatement();

@yossazou Hier gibt es nicht genügend Informationen, um zu verstehen, was los ist. Der Fehler, den Sie sehen, bedeutet, dass Sie versuchen, eine Anfrage auszuführen, während langweilig nicht mehr mit der DB verbunden ist.

@austincap Sie führen eine Anfrage für die Verbindung aus, bevor die Verbindung hergestellt wurde. Aus diesem Grund erhalten Sie den Fehler Requests can only be made in the LoggedIn state, not the Connecting state .

Ich bin ein Neuling in all dem, aber ich habe festgestellt, dass das Hinzufügen eines Handlers für das Verbindungs-Debug-Ereignis mir bei genau diesem Fehler geholfen hat. Ich fand heraus, dass meine Verbindung vom SQL-Server abgelehnt wurde.
connection.on('debug', function(err) { console.log('debug:', err);});

var Connection = require('mühsam').Connection;
var Request = require('mühsam').Request;
var express = require("express");
var bodyParser = require("body-parser");
var app = ausdrücken ();

// Body Parser-Middleware
app.use(bodyParser.json());

//Server einrichten
var server = app.listen(process.env.PORT || 8081, function () {
var port = server.adresse().port;
console.log("App läuft jetzt auf Port", port);
});

// Verbindung zur Datenbank herstellen
var config = {
Authentifizierung: {
Optionen: {
userName: 'Benutzername', // aktualisiere mich
Passwort: 'Passwort' // aktualisiere mich
},
Typ: 'Standard'
},
server: 'servername.database.windows.net', // aktualisiere mich
Optionen: {
database: 'development', //aktualisiere mich
verschlüsseln: wahr//wichtig
}
}
// Verbindung zu Azure herstellen
var connection = new Connection(config);
//JSON-Array erstellen
var daten = []
function executeStatement(query, res) {
var request = new Request(query, function(err, rowCount, rows) {
wenn (fehler) {
Konsole.log (err);
} anders {
console.log(rowCount + 'rows');
res.send({ status: 200, data: data, message: "OK"})
}
});

//connection.on('debug', function(err) { console.log('debug:', err);}); if the connection is not working

request.on('row', function (row) {
  data.push({
      ID: row[0].value,
      ProductName: row[1].value,
      Price: row[2].value,
      ProductDescription: row[3].value,
      CreatedDate: row[4].value,
      Username: row[5].value
  })

});
connection.execSql (Anfrage);
}

app.get('/api/products', function (req, res) {
var query =('Select * from Products');
executeStatement(query, res);
});

// Ich habe bemerkt, dass mein DB-Passwort und meine Benutzer-Anmeldeinformationen zurückgesetzt wurden, sodass ich keine Verbindung herstellen konnte

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen