Скачал по ссылке из этой темы новую версию сервера, но появилась другая проблема
2016-05-23 15:04:21 INFO: Query not provided: database.updateDeviceStatus
2016-05-23 15:04:22 WARN: The value is not set for the parameter number 1. - SQLServerException (... < QueryBuilder:432 < DataManager:460 < DefaultDataHandler:27 < ...)
2016-05-23 15:04:22 INFO: [4D996AAB] id: 459710040195126, time: 2016-05-23 15:04:14, lat: 54.48624, lon: 48.91782, speed: 39.7, course: 5.2
2016-05-23 15:04:25 DEBUG: [4B07F0B5: 5013 < 192.168.1.253] HEX: 2a48512c3335353438383032303131333437342c56312c2c562c2c4e2c2c452c302e30302c302c2c46464646464646462c66612c31342c313065662c66623632230d0a
2016-05-23 15:04:35 DEBUG: [4B07F0B5: 5013 < 192.168.1.253] HEX: 2a48512c3335353438383032303131333437342c56312c2c562c2c4e2c2c452c302e30302c302c2c46464646464646462c66612c31342c313065662c66623632230d0a
У вас какая-то проблема с конфигурацией. Подозреваю что вы используете старые параметры в SQL запросах.
использую Ваш запрос данный Вами
<entry key='database.selectDevicesAll'>
SELECT imeiNumber AS id, imeiNumber AS uniqueId FROM MSDevice WHERE ISNUMERIC(imeiNumber) = 1;
</entry>
<entry key='database.insertPosition'>
BEGIN TRAN;
DECLARE @accountID VARCHAR(32);
DECLARE @deviceID VARCHAR(32);
DECLARE @deviceTime BIGINT = DATEDIFF(S, '1970-01-01 00:00:00', DATEADD(HH, DATEDIFF(HH, GETDATE(), GETUTCDATE()), :time));
DECLARE @databaseTime BIGINT = DATEDIFF(S, '1970-01-01 00:00:00', GETUTCDATE());
UPDATE MSDevice SET lastValidLatitude = :latitude, lastValidLongitude = :longitude, lastGPSTimestamp = @deviceTime, lastUpdateTime = @databaseTime WHERE imeiNumber = :deviceId;
SELECT @accountID = accountID, @deviceID = deviceID FROM MSDevice WHERE imeiNumber = :deviceId;
INSERT INTO MSEventData (accountID, deviceID, timestamp, statusCode, latitude, longitude, speedKPH, heading, altitude, rawData, creationTime, address)
VALUES (@accountID, @deviceID, @deviceTime, 0, :latitude, :longitude, :speed * 1.852, :course, :altitude, '', @databaseTime, :address);
COMMIT TRAN;
</entry>
Замените :time
на :fixTime
.
Антон, спасибо! все заработало
Здравствуйте,
Антон, в базу данные попадают на карте отражаются но в логе еще какая-то ошибка посмотрите ...
2016-05-30 16:25:17 DEBUG: [B9B149B6: 5001 < 192.168.1.253] HEX: 3435393731303034303139353132363b
2016-05-30 16:25:17 DEBUG: [B9B149B6: 5001 > 192.168.1.253] HEX: 4f4e
2016-05-30 16:25:17 INFO: Query not provided: database.updateDeviceStatus
2016-05-30 16:25:28 DEBUG: [08FD1541: 5001 < 192.168.1.253] HEX: 3836383638333032323736373031303b
2016-05-30 16:25:28 DEBUG: [08FD1541: 5001 > 192.168.1.253] HEX: 4f4e
2016-05-30 16:25:28 INFO: Query not provided: database.updateDeviceStatus
2016-05-30 16:25:28 DEBUG: [B9B149B6: 5001 < 192.168.1.253] HEX: 696d65693a3435393731303034303139353132362c747261636b65722c3136303533303136323532372c2c462c3133323532332e3030302c412c353532302e343139362c4e2c30343833392e383835382c452c33372e31352c33332e33383b
2016-05-30 16:25:28 INFO: Query not provided: database.updateDeviceStatus
2016-05-30 16:25:28 WARN: The statement must be executed before any results can be obtained. - SQLServerException (... < QueryBuilder:434 < DataManager:460 < DefaultDataHandler:27 < ...)
2016-05-30 16:25:28 INFO: [B9B149B6] id: 459710040195126, time: 2016-05-30 16:25:23, lat: 55.34033, lon: 48.66476, speed: 37.2, course: 33.4
Похоже что проблема в том что ваш запрос не возвращяет сгенерированный идентификатор записи. Соответственно getGeneratedKeys возвращает ошибку.
игнорировать? или Вы подскажите как можно устранить?
Думаю что врятли это можно игнорировать. Нужно что-то делать с запросом.
Вот текст запроса. Что здесь можно и нужно поправить?
<entry key='database.selectDevicesAll'>
SELECT imeiNumber AS id, imeiNumber AS uniqueId FROM MSDevice WHERE ISNUMERIC(imeiNumber) = 1;
</entry>
<entry key='database.insertPosition'>
BEGIN TRAN;
DECLARE @accountID VARCHAR(32);
DECLARE @deviceID VARCHAR(32);
DECLARE @deviceTime BIGINT = DATEDIFF(S, '1970-01-01 00:00:00', DATEADD(HH, DATEDIFF(HH, GETDATE(), GETUTCDATE()), :fixTime));
DECLARE @databaseTime BIGINT = DATEDIFF(S, '1970-01-01 00:00:00', GETUTCDATE());
UPDATE MSDevice SET lastValidLatitude = :latitude, lastValidLongitude = :longitude, lastGPSTimestamp = @deviceTime, lastUpdateTime = @databaseTime WHERE imeiNumber = :deviceId;
SELECT @accountID = accountID, @deviceID = deviceID FROM MSDevice WHERE imeiNumber = :deviceId;
INSERT INTO MSEventData (accountID, deviceID, timestamp, statusCode, latitude, longitude, speedKPH, heading, altitude, rawData, creationTime, address)
VALUES (@accountID, @deviceID, @deviceTime, 0, :latitude, :longitude, :speed * 1.852, :course, :altitude, '', @databaseTime, :address);
COMMIT TRAN;
</entry>
К сожалению не знаю что можно поправить. Я бы начал с простого INSERT и посмотрел работает ли или нет.
Возможно какие-то изменения в коде требуются чтобы ваш SQL скрипт работал.
Здравствуйте, Антон
перестал работать сервер, не определяет два разных трекера
лог