Tedious: Las solicitudes solo se pueden realizar en el estado Conectado, no en el estado Final -- error

Creado en 7 ene. 2016  ·  4Comentarios  ·  Fuente: tediousjs/tedious

Hola a todos,

Tengo un problema con la conexión a la base de datos. Funcionó bien por un tiempo, pero desde ayer tengo este error. No tengo ni idea de porqué.

[Error de solicitud: las solicitudes solo se pueden realizar en el estado de sesión iniciada, no en el estado final]

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

Creo que no está accediendo a la función de devolución de llamada de connection.on. No imprime nada y conectado siempre es falso.

Gracias !!

Comentario más útil

Soy nuevo en todo esto, pero descubrí que agregar un controlador para el evento de depuración de la conexión me ayudó con este error exacto. Descubrí que el servidor sql rechazaba mi conexión.
connection.on('debug', function(err) { console.log('debug:', err);});

Todos 4 comentarios

Tengo un problema similar.

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)

Prácticamente estoy usando el código exacto aquí: 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 No hay suficiente información aquí para entender lo que está pasando. El error que ve significa que intenta ejecutar una solicitud mientras tedioso ya no está conectado a la base de datos.

@austincap Está ejecutando una solicitud en la conexión antes de que se establezca la conexión. Es por eso que obtienes el error Requests can only be made in the LoggedIn state, not the Connecting state .

Soy nuevo en todo esto, pero descubrí que agregar un controlador para el evento de depuración de la conexión me ayudó con este error exacto. Descubrí que el servidor sql rechazaba mi conexión.
connection.on('debug', function(err) { console.log('debug:', err);});

var Conexión = require('tedioso').Conexión;
var Solicitud = require('tedioso').Solicitud;
var express = require("expreso");
var bodyParser = require("body-parser");
var aplicación = express();

// Middleware del analizador corporal
app.use(bodyParser.json());

//Configurando el servidor
servidor var = app.listen(proceso.env.PORT || 8081, función () {
var puerto = servidor.dirección().puerto;
console.log("La aplicación ahora se está ejecutando en el puerto", puerto);
});

// Crear conexión a la base de datos
var configuración = {
autenticación: {
opciones: {
nombre de usuario: 'nombre de usuario', // actualizarme
contraseña: 'contraseña' // actualízame
},
tipo: 'predeterminado'
},
server: 'servername.database.windows.net', // actualíceme
opciones: {
base de datos: 'desarrollo', // actualízame
cifrar: verdadero//importante
}
}
//crear la conexión a azure
var conexión = nueva conexión (config);
//crear una matriz json
var datos = []
función ejecutarDeclaración(consulta, res) {
solicitud de var = nueva solicitud (consulta, función (err, número de filas, filas) {
si (err) {
consola.log(err);
} demás {
console.log(rowCount + 'filas');
res.send({estado: 200, datos: datos, mensaje: "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
  })

});
conexión.execSql(solicitud);
}

app.get('/api/productos', función (req, res) {
var consulta =('Seleccionar * de productos');
ejecutarDeclaración(consulta, res);
});

// Me di cuenta de que mi contraseña de base de datos y las credenciales de usuario se restablecieron, por lo que no pude establecer la conexión.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

ggazulla picture ggazulla  ·  4Comentarios

SaloniSonpal picture SaloniSonpal  ·  5Comentarios

diginfo picture diginfo  ·  6Comentarios

ghost picture ghost  ·  5Comentarios

arthurschreiber picture arthurschreiber  ·  8Comentarios