Стартовая страница › Форумы › Вопросы без категории › Ошибка при экспорте в DB
Помечено: DBexport Mysql
- В этой теме 15 ответов, 2 участника, последнее обновление 9 лет, 6 месяцев назад сделано
Mikhail.
-
АвторЗаписи
-
21.12.2016 в 08:03 #3872
malec
УчастникДобрый день!
при экспорте (INSERT INTO events (datetime, objnum, kpnum, paramid, cnlnum, oldcnlval, oldcnlstat, newcnlval, newcnlstat, checked, userid, descr, data) VALUES (@dateTime, @objNum, @kpNum, @paramID, @cnlNum, @oldCnlVal, @oldCnlStat, @newCnlVal, @newCnlStat, @checked, @userID, @descr, @data)ошибка в логе: Ошибка при экспорте текущих данных в БД MySQL — 192.168.56.101: Fatal error encountered during command execution
такой запрос проходит: INSERT INTO cnldata (datetime, cnlnum, val, stat) VALUES (@dateTime, @cnlNum, @val, @stat)
Но если добвить: INSERT INTO cnldata (id_kp, datetime, cnlnum, val, stat) VALUES (@KpNum, @dateTime, @cnlNum, @val, @stat)
то ошибка повторяется…
Экспортировать можно только три параметра? @dateTime, @cnlNum, @val, @stat21.12.2016 в 11:15 #3880
MikhailМодераторДобрый день!
Да, при выполнении запроса определены только те параметры, перед которыми стоит @ в примере.Если Вам нужен номер КП, то потребуется сделать следующее:
1. Создать собственные дополнительные таблицы в БД, которые будут содержать КП и привязку входных каналов к КП. Оптимально — написать утилиту, которая экспортирует эти данные из базы конфигурации. Можно самостоятельно, можно заказать. Если данных мало, то можно без использования утилиты ввести их вручную.2. Использовать полученную связку КП — номер канала в Ваших запросах к MySQL.
22.12.2016 в 08:09 #3901malec
УчастникА как сделать чтоб в БД не попадали нулевые значения у которых в КП статус badWaitingForInitialData?
22.12.2016 в 12:09 #3910
MikhailМодераторКакой статус при этом передаётся входным каналам?
23.12.2016 в 06:43 #3921malec
Участникstat = 0
24.12.2016 в 15:12 #3923
MikhailМодераторА как сделать чтоб в БД не попадали нулевые значения у которых в КП статус badWaitingForInitialData?
Изменить SQL запрос в параметрах работы модуля экспорта в БД, написав фильтр.
27.12.2016 в 22:23 #3957malec
УчастникДобавил where stat <> 0
от статусов с 0 избавило но логи с статусом badWaitingForInitialData все равно идут в БД со статусом 1
А так же сейчас не пишутся каналы у которых на выходе 0 у меня это 36 и 38 канал(М3 и ТИ)
28.12.2016 в 09:39 #3961
MikhailМодераторВы 23.12.2016 в 06:43 писали, что badWaitingForInitialData соответствует stat = 0. Или это не так?
А так же сейчас не пишутся каналы у которых на выходе 0
Данные на сервер передаются либо по изменению, либо 1 раз в минуту (этот интервал настраивается в Коммуникаторе).
28.12.2016 в 09:46 #3962malec
Участниквидимо не так т.к. данные которые устарели либо их еще нет в орс сервере помечаются как badWaitingForInitialData у них статус 1 и в БД записываются
28.12.2016 в 13:59 #3963
MikhailМодераторПопробуйте https://yadi.sk/d/OkETOjta35VwEW
В этой dll изменено определение статуса тега.
Напишите, помогло или нет.03.01.2017 в 09:52 #3977malec
Участникне помогла dll
сейчас не могу решить проблему с тем что у меня значения в орс сервере обновляются раз в сутки, в коммуникаторе можно задать интервал не более раз в час(3600сек). Что приводит к не нужным дублям строк в БД. Как это решить средствами sql пока не знаю. Может Вы подскажите? Хотя разве это ON DUPLICATE KEY UPDATE val = @val, stat = @stat не должно ограничивать дубли?03.01.2017 в 11:11 #3978
MikhailМодераторПо поводу DLL напомните, пожалуйста, после 9 января — сейчас выходные дни.
По SQL — можно проверять при вставке или обновлении с помощью where, что таких значений нет в БД.03.01.2017 в 15:52 #3979malec
Участниктоже думал что не проблема сделать это через where. Но оказалось что в insert не применимо.
04.01.2017 в 20:53 #398010.01.2017 в 06:56 #4000malec
УчастникА можно dll в которой не будут выгружаться строки со статусом 0 А то у меня что-то совсем плохо с sql((
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.