Стартовая страница › Форумы › Ошибки в работе › DBExportPlus, ошибка.
- В этой теме 10 ответов, 3 участника, последнее обновление 3 недели, 3 дня назад сделано
Oleg.
-
АвторСообщения
-
05.12.2025 в 18:08 #41313
OlegУчастникЗдравствуйте,
Может кто подскажет. Драйвер работает нормально, но изредка перестает писать в БД.
Версия Импорт из БД Плюс 6.3.0.0Лечится перезапуском линии связи. Сразу все работает.
Из лога до перезапуска.
2025-12-05 17:56:15 Команда DBExpCVDCRN устройству [500] Экспорт в БД: number
2025-12-05 17:56:15 Получена команда.
2025-12-05 17:56:15 Дата: 2025-12-05 14:56:14
2025-12-05 17:56:15 Пользователь ID: 11
2025-12-05 17:56:15 Номер устройства: 500
2025-12-05 17:56:15 Номер команды (@cmdNum): 502
2025-12-05 17:56:15 Код команды (@cmdCode): DBExpCVDCRN
2025-12-05 17:56:15 Значение команды (@cmdVal): не число
2025-12-05 17:56:15 Значение команды (@cmdData): 425410JHL1BF1AQ0
2025-12-05 17:56:15 Запрос на изменение данных
2025-12-05 17:56:15 UPDATE write_table
SET RollNumber = @CmdVal, DateTime = Now()
WHERE RollType = ‘Current’;
2025-12-05 17:56:15 Ошибка при отправке команды БД: System.FormatException: The input string ‘425410JHL1BF1AQ0’ was not in a correct format.
at System.Number.ThrowFormatException[TChar](ReadOnlySpan`1 value)
at System.String.System.IConvertible.ToDouble(IFormatProvider provider)
at MySql.Data.Types.MySqlDouble.MySql.Data.Types.IMySqlValue.WriteValueAsync(MySqlPacket packet, Boolean binary, Object val, Int32 length, Boolean execAsync)
at MySql.Data.MySqlClient.MySqlParameter.SerializeAsync(MySqlPacket packet, Boolean binary, MySqlConnectionStringBuilder settings, Boolean execAsync)
at MySql.Data.MySqlClient.Statement.SerializeParameterAsync(MySqlParameterCollection parameters, MySqlPacket packet, String parmName, Int32 parameterIndex, Boolean execAsync)
at MySql.Data.MySqlClient.Statement.InternalBindParametersAsync(String sql, MySqlParameterCollection parameters, MySqlPacket packet, Boolean execAsync)
at MySql.Data.MySqlClient.Statement.BindParametersAsync(Boolean execAsync)
at MySql.Data.MySqlClient.Statement.ExecuteAsync(Boolean execAsync)
at MySql.Data.MySqlClient.PreparableStatement.ExecuteAsync(Boolean execAsync)
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReaderAsync(CommandBehavior behavior, Boolean execAsync, CancellationToken cancellationToken)
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReaderAsync(CommandBehavior behavior, Boolean execAsync, CancellationToken cancellationToken)
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReaderAsync(CommandBehavior behavior, Boolean execAsync, CancellationToken cancellationToken)
at MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQueryAsync(Boolean execAsync, CancellationToken cancellationToken)
at Scada.Comm.Drivers.DrvDbImportPlusLogic.Logic.DevDbImportPlusLogic.SendDbCommand(DbCommand dbCommand)Из лога после перезапуска.
2025-12-05 17:56:35 Команда DBExpCVDCRN устройству [500] Экспорт в БД: number
2025-12-05 17:56:35 Получена команда.
2025-12-05 17:56:35 Дата: 2025-12-05 14:56:34
2025-12-05 17:56:35 Пользователь ID: 11
2025-12-05 17:56:35 Номер устройства: 500
2025-12-05 17:56:35 Номер команды (@cmdNum): 502
2025-12-05 17:56:35 Код команды (@cmdCode): DBExpCVDCRN
2025-12-05 17:56:35 Значение команды (@cmdVal): не число
2025-12-05 17:56:35 Значение команды (@cmdData): 425410JHL1BF1AQ0
2025-12-05 17:56:35 Запрос на изменение данных
2025-12-05 17:56:35 UPDATE write_table
SET RollNumber = @CmdVal, DateTime = Now()
WHERE RollType = ‘Current’;
2025-12-05 17:56:35 Изменено записей 106.12.2025 в 12:18 #41320
MikhailМодераторДобрый день!
То есть одна и та же команда может вызвать ошибку, а после перезапуска работает нормально?
Надеюсь, автор драйвера поможет в диагностике.06.12.2025 в 12:20 #41321
MikhailМодератор> Значение команды (@cmdVal): не число
> System.String.System.IConvertible.ToDouble
Эти строки наводят на мысль, что запрос на таких данных и должен выдавать ошибку.
Драйвер, вероятно, должен преобразовывать double.NaN в DBNull.Value.06.12.2025 в 17:33 #41327
OlegУчастникДобрый день!
То есть одна и та же команда может вызвать ошибку, а после перезапуска работает нормально?
Надеюсь, автор драйвера поможет в диагностике.Да, все верно. Одна и таже команда из МАУ каждые 5с.
Обновил драйвер до 6.3.0.2, наблюдаем
07.12.2025 в 04:10 #41328
JurasskParkУчастникВот почему вы в субботу не отдыхаете? Нет чтобы пили компот и ели торт. Эх…
Вообщем, если null придетает и его надо в DB.Null конвертировать… Я добавил, но мне не понятно… Почему МЯУ его отправляет? Как?Новая версия. Но я не верю, что она поможет.
https://github.com/JurasskPark/RapidScada_v6/releases/tag/DrvDbImportPlus_v6.3.0.408.12.2025 в 09:35 #41329
OlegУчастникпот и ели торт. Эх…
Вообщем, если null придетает и его надо в DB.Null конвертировать… Я добавил, но мне не понятно… Почему МЯУ его отправляет? Как?Новая версия. Но я не верю, что она поможет.
https://github.com/JurasskPark/RapidScada_v6/releases/tag/DrvDbImportPlus_v6.3.0.4Спасибо, попробуем 👍
P.S. Сменный график, что поделать ;)))08.12.2025 в 14:14 #41330
MikhailМодераторЕсли в команде заполнено CmdData, то при этом CmdVal может оказаться double.NaN
А если наоборот, то CmdData равно null.20.12.2025 в 01:34 #41489
JurasskParkУчастник@Oleg, что там с драйвером?
Ошибки были?22.12.2025 в 09:19 #41492
OlegУчастникЗдравствуйте 👋
Пока работает как надо, сбоев и ошибок не было. Спасибо!22.12.2025 в 13:02 #41493
JurasskParkУчастникОк. Через полгода расскажете. 😀
22.12.2025 в 13:13 #41494
OlegУчастникКонечно, будут проблемы — напишу обязательно)
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.