mysql> tablename set fieldname = 'C200900674' where fieldname - 'C200900673';MySQL UPDATEの動作
ERROR 1062(23000):この上のキー1人の
任意の考えや提案のための重複エントリ 'C200900674-2008-0-1'?誰かに誤って等号の代わりにマイナス記号を付けて更新をさせました。明らかに、すべてのレコードをその値よりも小さく変更しようとしましたか?英数字であり、実際にはかなり不完全ですが。その上に、そのエラーが発生する前にある量のレコードが更新され、フィードバックがまったくありませんでした。 「クエリOK、X行が影響を受けました(0.00秒)」のようなものはありませんでした。 autocommit = 1のため、ロールバックする機能はありません。
とにかく、これに関するヒントやポインタを探しています。なぜそのクエリが何かをやったのですが、それは本当に私にエラーを返したはずです。経験の浅い管理者には骨が抜けていることはもちろんありません。
テーブルはINNODBにあり、明らかに私たちはレコードの量が変更されたことを経験しました。私が今までに明らかにしたすべての証拠はそれを指摘しています。バイナリログはこのボックスで有効になり、 "mysqlbinlog -s {logfile} | grep -i {そのレコードの一意の識別子}"が含まれていました。 FWIWはupdate文*もbinlogに記録されていました。私はこれを試してみるつもりで、おそらくテストDBといくつかのテーブルを作成し、制御された環境でそれを再現しようとします。ありがとう... – wdingus
あなたの例の文字列は本当ですか?私は 'C200900674'の代わりに '200900674C'や '2009C00674C'のようなものがある、つまり数字で始まっていると、これが起こっているのを見ることができます。 –
はい、私が変更したのはテーブルとフィールドの名前だけでした。 – wdingus