私のmysqlに奇妙な問題があります。この表には約2,000万行が含まれています。 テーブルの構造は以下の通りである:。MySQLが間違った列を更新しています
create table session_table (id int, start_datetime
datetime,start_date_int int, start_time_int, end_datetime datetime,
end_date_int int, end_datetime_int int)
日付の整数バージョン、E、G、start_date_intとend_date_int列はTO_DAYS()関数を使用して整数として日付を格納するためのものです。 MySQL TO_DAYS()は、指定された日付と0の間の日数を返します。同様に、start_time_intカラムとend_time_intカラムには、datetime値のunix_timestampが格納されます。
は今、次の更新ステートメントを参照してください。
update session_table
SET
start_date_int=to_days(start_datetime),
start_datetime_int=UNIX_TIMESTAMP((start_datetime),
end_date_int=to_days(end_datetime),
end_datetime_int=UNIX_TIMESTAMP(end_datetime)
where start_datetime >= '2016-07-01 00:00:00'
更新なステートメントは、前にうまく働きました。しかし、今日は'2016-10-03 'の行を更新するだけです(私の所見はカウントに基づいています)。不思議なことに、start_datetime列をdatetimeで更新していますが、更新文で!
mysqlサーバが壊れている可能性はありますか?非常にデータ集約型のシステムで、たくさんのデータを持つテーブルがたくさんあります。たとえば、多くの挿入、更新プロセスを伴う2,000万〜3千万の行があります。
mysqlスケーラビリティのためにデータが数日間自動的に削除される可能性もありますか? ご意見/ご提案をお願いします。
あなたは何が起こったのかを間違って解釈した可能性が高いです。 MySQLがどのようにして外科的に壊れているのかを想像するのは難しいです。誤操作を起こすことなく、間違った列を更新することができます。私はかつて列にテーブルを挿入した結果、SQL Serverで同様の問題が発生しましたが、コードは再コンパイルされませんでした。 –
ご意見ありがとうございます。私はmysqlツール用のnavicatを使って更新ステートメントを直接書いています。私は更新ステートメントを何度か再cehckedまた、2つの他の開発者にそれを示した。しかし、それでもstart_datetimeカラムとend_datetiemカラムを更新しています:( – user6725114