RZ50 Ответов: 2

Нарушение параллелизма при использовании mysql VB.NET обновление таблицы мастера


При подключении DataGrideView к базе данных MySQL, всегда отменяю de изменения поля и пытаюсь обновить точную исходную информацию, я получил ошибку "нарушение параллелизма: команда UpdateCommand затронула 0 из ожидаемых 1 записей"

Это однопользовательское приложение.

Загружаю данные, меняю поле, потом ставлю как загружено и ошибка.

мой код:
Me.Validate()
Me.TesteBindingSource.EndEdit()
Me.TesteTableAdapter.Update(Me.DataSetMySQL_TESTE.teste)


Что я уже пробовал:

Если я изменил данные в поле, все в порядке. Но если изменения равны, как при загрузке, то ошибка!

0x01AA

Просто посмотрите прямо на странице CP в разделе "Связанные вопросы". Я думаю, вы найдете ответ на этот вопрос. Кстати. похоже не на "реальную ошибку", а на то, что "затронутые записи" возвращают "0" для обновления.

Maciej Los

Какой драйвер MySql вы используете?

RZ50

Драйвер MySQL ODBC 5.1

Maciej Los

Есть ли какая-то причина использовать ODBC? Я бы использовал MySQL Connector для .NET. Видеть: MySQL - odbc - должен ли я использовать Connector/NET или Connector/ODBC для разработки своего приложения?[^]
Какое поле вызывает такую ошибку? Я предполагаю, что это числовое значение...

RZ50

моя таблица (тест) проста:
pk INT(11)
ном тип varchar(45)

моего запроса:
Тест обновления установлен ном =? Где (pk =?)

если я изменяю неправильную запись в DataGridView и сбрасываю исходную информацию, а затем я изменяю правильную запись, и при обновлении она дает мне эту ошибку, и я теряю информацию о правильной записи...

Maciej Los

Как вы сбрасываете информацию? Какой метод вы используете?

RZ50

С клавиатурой.
Кол-во номе
1 abc --> Я изменил на AB, а затем удалил с клавиатуры, чтобы остаться тем же abc
2 xyz --> я перешел на AB это чтобы остаться
после сохранения дайте мне ошибку на записи 1 и потеряйте информацию о rec2

Maciej Los

Кажется, вам нужно отклонить изменения в коде, прежде чем вы начнете еще одно изменение.
Пожалуйста, прочтите это: Обновление источников данных с помощью адаптеров данных - ADO.NET | Microsoft Docs[^]

RZ50

После прочтения Вашего предложения я нашел эту заметку: "это приводит к тому, что число затронутых строк возвращается равным нулю, что DataAdapter интерпретирует как конфликт параллелизма. В этом случае будет вызвано исключение DBConcurrencyException."

Поэтому в моем драйвере я меняю опцию "возвращать совпадающие строки вместо затронутых строк" на true, и проблема решена!

Спасибо вам за все...

Maciej Los

Отлично! Я предлагаю опубликовать это как ответ (и принять его с помощью зеленой кнопки), чтобы удалить ваш вопрос из списка без ответа.

2 Ответов

Рейтинг:
2

Maciej Los

Согласно нашему обсуждению в комментариях...

Пожалуйста, прочтите это: MySQL :: проблема нарушения параллелизма при обновлении набора данных[^]

Есть предложение:

Цитата:
Я столкнулся с этим. Переключение DOUBLE вводить DECIMAL(19,4) починил его для меня. Надеюсь, это немного поможет.


Рейтинг:
10

RZ50

Я нашел эту заметку: "это приводит к тому, что число затронутых строк возвращается равным нулю, что DataAdapter интерпретирует как конфликт параллелизма. В этом случае будет вызвано исключение DBConcurrencyException."

Поэтому в моем драйвере ODBC я меняю опцию "возвращать совпадающие строки вместо затронутых строк" на true, и проблема решена!