尝试更新数据库时出现并发冲突(仅限特定表)

时间:2012-11-14 22:11:43

标签: c# mysql

这个问题让我发疯了。

我正在尝试使用MySQL dataAdapter更新数据集。此方法适用于我的数据库中的其他表,它只是在这个表中发生。以下是代码示例:

    String query = "select * from accounts";
    DataSet dataSet = new DataSet();
    connection.Open();
    MySqlDataAdapter dataAdapter = new MySqlDataAdapter(query, (MySqlConnection)connection);
    MySqlCommandBuilder commandBuilder = new MySqlCommandBuilder(dataAdapter);
    dataAdapter.FillSchema(dataSet, SchemaType.Source);
    commandBuilder.RefreshSchema();
    dataAdapter.Fill(dataSet);

    dataSet.Tables[0].Rows[0]["balance"] = 1M;
    dataAdapter.Update(dataSet);

尝试更新后会抛出异常。请记住,这是我的代码的简化示例,但它得到了相同的结果。

我研究了这个错误,我能找到的是:
1)如果此数据自填充之后已被其他用户更改 2)如果该行不存在。

但是没有可能的方式由另一个用户更改数据,因为这发生在我的开发机器上。该行显然存在,因为它不会在Rows [0]处抛出异常。

正如我所说,这只发生在这一张桌子上。该表有一个int作为主键,我想要更新的列是一个十进制,所以我不知道问题是什么。

感谢您的任何建议。

1 个答案:

答案 0 :(得分:0)

我知道这是在不久前发布的,但我刚刚找到了解决问题的方法:

似乎问题出在桌面结构或类似的东西上。我在表上做了一个mysqldump,然后只导入了转储(基本上是从头开始构建表)。在我这样做之后,一切都像魅力一样。

希望我可以帮助别人解决这个奇怪的问题。