|
分類:[VB.NET/VB2005 以降]
System.Data
同時実行違反 : UpdateCommandによって、処理予定の1レコードのうち0件が処理されました。
上記エラーが解決できなくて困って居ます。
VB2005 + Mysql でプログラミングしています。
今現在困っているのは、MYSQLの単独テーブルを単純にdataadapter で datatableにfillで読込み、
いくつかの値を変更したのちupdateコマンドで反映させるというコードです。
いままで何の問題もなく実行できていたのですが、今回作っているプログラムでは何をやっても解決できません。
もう何時間もぐぐっているのですが泣きそうです。。
ソースはいたってシンプルで
MYSQLからの読込は以下のコードを使って居ます。
宣言は省いていますが、privateでやってあります。
'データアダプター
da_sql = New MySqlDataAdapter()
'データアダプターのキー取得
da_sql.MissingSchemaAction = MissingSchemaAction.AddWithKey
'接続コマンド生成
cmd = New MySqlCommand(sqlStr)
'接続
con_sql.Open()
'データアダプター
da_sql.SelectCommand = New MySqlCommand(sqlStr, con_sql)
'コマンドビルダー
cb_sql = New MySqlCommandBuilder(da_sql)
'データセットに代入
da_sql.Fill(tbl)
'クローズ
con_sql.Close()
MYSQLへの反映は修正後に以下のコードでやっています。
'接続
con_sql.Open()
'データアダプタをアップデート
da_sql.Update(tbl)
'クローズ
con_sql.Close()
修正自体はdatagridviewにバインドさせた状態でやったり、直接datatableへ変更をかけたりもして
試しているのですが、あるテーブルでのみ同時実行違反が発生します。
ほかのテーブルでは問題ありません。
同時実行違反を文字どおりの解釈をした問題は皆無である事は間違いありません。
ほぼなんの実行もしていないプログラム上で、このDB読み書きだけのコードを実行しているので
誰かがアクセスしていたり、別プロセスが読みにいってたりなんて事はないです。
WEBでいろいろ情報を漁っていたところ、MYSQLの予約後をカラム名に使うと発生したりとか、
レコードに空白があるとだめだとか、あらゆる事を確かめてみましたが解決に至っていません。
どなたか、このような経験もしくは知識がある方いらっしゃいましたら助けていただけないでしょうか?
|