我在我的mysql中有一個奇怪的問題。該表包含大約2000萬行。 表的結構是: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'
更新statment之前工作的罰款。然而,今天它似乎只是更新'2016-10-03'的行(我的觀察是基於count的),奇怪的是它正在更新start_datetime列和發佈查詢的日期時間,儘管我沒有把這個列在更新聲明!
有沒有可能導致mysql服務器損壞?這是一個非常數據密集的系統,我們有很多數據表,包括大量的數據,例如20-30萬行插入,更新過程。
還有什麼可能數據可能會自動刪除幾天自動有時爲MySQL的可擴展性? 請對此提出您的意見/建議。
這很可能是你在解釋發生的事情時犯了錯誤。很難想象MySQL如何被如此手術破壞,以至於允許操作發生(沒有錯誤),而是更新錯誤的列。我曾經有一次與SQL Server有類似的問題,這是一個列被插入到表中的結果,但是代碼沒有被重新編譯。 –
感謝您的評論。我正在使用navicat for mysql工具直接編寫update語句。我多次重新發布更新聲明,並將其展示給其他兩位開發人員。但仍然是更新start_datetime和end_datetiem列:( – user6725114