Ошибка при экспорте в DB

Помечено: 

Просмотр 15 сообщений - с 1 по 15 (из 16 всего)
  • Автор
    Записи
  • #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, @stat

    #3880
    Mikhail
    Модератор

    Добрый день!
    Да, при выполнении запроса определены только те параметры, перед которыми стоит @ в примере.

    Если Вам нужен номер КП, то потребуется сделать следующее:
    1. Создать собственные дополнительные таблицы в БД, которые будут содержать КП и привязку входных каналов к КП. Оптимально — написать утилиту, которая экспортирует эти данные из базы конфигурации. Можно самостоятельно, можно заказать. Если данных мало, то можно без использования утилиты ввести их вручную.

    2. Использовать полученную связку КП — номер канала в Ваших запросах к MySQL.

    #3901
    malec
    Участник

    А как сделать чтоб в БД не попадали нулевые значения у которых в КП статус badWaitingForInitialData?

    #3910
    Mikhail
    Модератор

    Какой статус при этом передаётся входным каналам?

    #3921
    malec
    Участник

    stat = 0

    #3923
    Mikhail
    Модератор

    А как сделать чтоб в БД не попадали нулевые значения у которых в КП статус badWaitingForInitialData?

    Изменить SQL запрос в параметрах работы модуля экспорта в БД, написав фильтр.

    #3957
    malec
    Участник

    Добавил where stat <> 0
    от статусов с 0 избавило но логи с статусом badWaitingForInitialData все равно идут в БД со статусом 1
    А так же сейчас не пишутся каналы у которых на выходе 0 у меня это 36 и 38 канал(М3 и ТИ)лог

    #3961
    Mikhail
    Модератор

    Вы 23.12.2016 в 06:43 писали, что badWaitingForInitialData соответствует stat = 0. Или это не так?

    А так же сейчас не пишутся каналы у которых на выходе 0

    Данные на сервер передаются либо по изменению, либо 1 раз в минуту (этот интервал настраивается в Коммуникаторе).

    #3962
    malec
    Участник

    видимо не так т.к. данные которые устарели либо их еще нет в орс сервере помечаются как badWaitingForInitialData у них статус 1 и в БД записываются

    #3963
    Mikhail
    Модератор

    Попробуйте https://yadi.sk/d/OkETOjta35VwEW
    В этой dll изменено определение статуса тега.
    Напишите, помогло или нет.

    #3977
    malec
    Участник

    не помогла dll
    сейчас не могу решить проблему с тем что у меня значения в орс сервере обновляются раз в сутки, в коммуникаторе можно задать интервал не более раз в час(3600сек). Что приводит к не нужным дублям строк в БД. Как это решить средствами sql пока не знаю. Может Вы подскажите? Хотя разве это ON DUPLICATE KEY UPDATE val = @val, stat = @stat не должно ограничивать дубли?

    #3978
    Mikhail
    Модератор

    По поводу DLL напомните, пожалуйста, после 9 января — сейчас выходные дни.
    По SQL — можно проверять при вставке или обновлении с помощью where, что таких значений нет в БД.

    #3979
    malec
    Участник

    тоже думал что не проблема сделать это через where. Но оказалось что в insert не применимо.

    #3980
    Mikhail
    Модератор

    Используйте советы отсюда

    #4000
    malec
    Участник

    А можно dll в которой не будут выгружаться строки со статусом 0 А то у меня что-то совсем плохо с sql((

Просмотр 15 сообщений - с 1 по 15 (из 16 всего)
  • Для ответа в этой теме необходимо авторизоваться.