Tedious: Запросы могут выполняться только в состоянии «Вход в систему», а не в состоянии «Конечный» — ошибка

Созданный на 7 янв. 2016  ·  4Комментарии  ·  Источник: tediousjs/tedious

Всем привет,

У меня проблема с подключением к базе данных. Некоторое время все работало нормально, но со вчерашнего дня у меня эта ошибка. Понятия не имею почему.

[Ошибка запроса: запросы можно делать только в состоянии входа в систему, а не в конечном состоянии]

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

Я думаю, что он не попадает в функцию обратного вызова connection.on. Он ничего не печатает и соединение всегда ложно.

Спасибо !!

Самый полезный комментарий

Я новичок во всем этом, но я обнаружил, что добавление обработчика события отладки соединения помогло мне с этой точной ошибкой. Я узнал, что мое соединение было отклонено сервером sql.
connection.on('debug', function(err) { console.log('debug:', err);});

Все 4 Комментарий

У меня похожая проблема.

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)

Я в значительной степени использую точную форму кода здесь: 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 Здесь недостаточно информации, чтобы понять, что происходит. Ошибка, которую вы видите, означает, что вы пытаетесь выполнить запрос, когда tedious больше не подключен к БД.

@austincap Вы выполняете запрос на соединение до того, как соединение было установлено. Вот почему вы получаете ошибку Requests can only be made in the LoggedIn state, not the Connecting state .

Я новичок во всем этом, но я обнаружил, что добавление обработчика события отладки соединения помогло мне с этой точной ошибкой. Я узнал, что мое соединение было отклонено сервером sql.
connection.on('debug', function(err) { console.log('debug:', err);});

var Connection = require('утомительно').Connection;
var Запрос = требуется('утомительно').Запрос;
вар экспресс = требуется ("экспресс");
var bodyParser = require("парсер тела");
вар приложение = экспресс();

// Промежуточное ПО анализатора тела
app.use(bodyParser.json());

//Настройка сервера
var server = app.listen(process.env.PORT || 8081, function () {
порт var = server.address().port;
console.log("Приложение теперь работает на порту", порт);
});

// Создаем соединение с базой данных
переменная конфига = {
аутентификация: {
опции: {
userName: 'имя пользователя', // обновить меня
пароль: 'пароль' // обновить меня
},
тип: 'по умолчанию'
},
server: 'servername.database.windows.net', // обновить меня
опции: {
база данных: 'разработка', //обновите меня
зашифровать: правда//важно
}
}
//создаем подключение к лазури
соединение var = новое соединение (конфигурация);
//создаем json-массив
переменные данные = []
функция executeStatement (запрос, разрешение) {
var запрос = новый запрос (запрос, функция (ошибка, rowCount, строки) {
если (ошибка) {
console.log(ошибка);
} еще {
console.log(rowCount + 'строки');
res.send({статус: 200, данные: данные, сообщение: "ОК"})
}
});

//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
  })

});
соединение.execSql (запрос);
}

app.get('/api/products', function (req, res) {
var query =('Выберите * из продуктов');
выполнить заявление (запрос, разрешение);
});

// я заметил, что мой пароль к базе данных и учетные данные пользователя были сброшены, поэтому я не мог установить соединение

Была ли эта страница полезной?
0 / 5 - 0 рейтинги