Tedious: Les requêtes ne peuvent être effectuées qu'à l'état Connecté, pas à l'état Final -- erreur

Créé le 7 janv. 2016  ·  4Commentaires  ·  Source: tediousjs/tedious

Salut tout le monde,

J'ai un problème avec la connexion à la base de données. Cela a bien fonctionné pendant un certain temps, mais depuis hier, j'ai cette erreur. Je ne sais pas pourquoi.

[Erreur de demande : les demandes ne peuvent être effectuées qu'à l'état connecté, pas à l'état final]

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

Je pense qu'il n'entre pas dans la fonction de rappel de connection.on. Il n'imprime rien et connecté est toujours faux.

Merci !!

Commentaire le plus utile

Je suis un débutant dans tout cela, mais j'ai trouvé que l'ajout d'un gestionnaire pour l'événement de débogage de connexion m'a aidé avec cette erreur exacte. J'ai découvert que ma connexion était refusée par le serveur sql.
connection.on('debug', function(err) { console.log('debug:', err);});

Tous les 4 commentaires

J'ai le même problème.

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)

J'utilise à peu près la forme de code exacte ici: 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 Il n'y a pas assez d'informations ici pour comprendre ce qui se passe. L'erreur que vous voyez signifie que vous essayez d'exécuter une requête alors que fastidieux n'est plus connecté à la base de données.

@austincap Vous exécutez une requête sur la connexion avant que la connexion ne soit établie. C'est pourquoi vous obtenez l'erreur Requests can only be made in the LoggedIn state, not the Connecting state .

Je suis un débutant dans tout cela, mais j'ai trouvé que l'ajout d'un gestionnaire pour l'événement de débogage de connexion m'a aidé avec cette erreur exacte. J'ai découvert que ma connexion était refusée par le serveur sql.
connection.on('debug', function(err) { console.log('debug:', err);});

var Connexion = require('fastidieux').Connexion ;
var Requête = require('fastidieux').Requête ;
var express = require("express");
var bodyParser = require("body-parser");
var app = express();

// Intergiciel d'analyse de corps
app.use(bodyParser.json());

//Configuration du serveur
var serveur = app.listen(process.env.PORT || 8081, function() {
var port = serveur.adresse().port;
console.log("App en cours d'exécution sur le port", port);
});

// Créer une connexion à la base de données
var config = {
authentification : {
option : {
userName : 'nom d'utilisateur', // me mettre à jour
mot de passe : 'password' // me mettre à jour
},
tapez : 'par défaut'
},
serveur : 'servername.database.windows.net', // me mettre à jour
option : {
base de données : 'développement', // me mettre à jour
chiffrer : vrai // important
}
}
// crée la connexion à azur
var connexion = nouvelle connexion (config);
// crée un tableau json
var données = []
function executeStatement(query, res) {
var requête = nouvelle requête (requête, fonction (erreur, nombre de lignes, lignes) {
si (erreur) {
console.log(err);
} autre {
console.log(rowCount + ' rows');
res.send({ statut : 200, données : données, 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
  })

});
connexion.execSql(demande);
}

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

// j'ai remarqué que mon mot de passe de base de données et mes informations d'identification d'utilisateur ont été réinitialisés, je n'ai donc pas pu établir de connexion

Cette page vous a été utile?
0 / 5 - 0 notes