困惑了好久,今天測試了一下,終於明白了。。。
現將結果公布如下:
第一步:
在214(214為服務器)上的test數據庫中建立表dump (建表是在win下用administrator導入的)
CREATE TABLE dump (
id BIGINT NOT NULL DEFAULT 0,
timestamp TIMESTAMP NOT NULL,
PRIMARY KEY (id)
);
第二步:
插入若干數據,如下
insert into dump(id,timestamp) values(1,'2010-01-05 01:01:00');
insert into dump(id,timestamp) values(1,'2010-01-05 05:05:00');
。。。 。。。
第三步:
在214上用MySQLdump導出2010-01-05的全部數據
# MySQLdump -t --extended-insert=false -w "timestamp between '2010-01-05 00:00:00' and '2010-01-05 23:59:59'" test dump -u root -p > dump1.sql
問題出現了,結果,導出的數據為
也就是說,用MySQLdump從數據庫裡導出的數據,時間上並不符合條件裡所設置的時間。結果差了8個小時。
因此,我們要是想將數據庫中時間為2010-01-05的數據導出,MySQLdump應該如下:
# MySQLdump -t --extended-insert=false -w "timestamp between '2010-01-04 16:00:00' and '2010-01-05 15:59:59'" test dump -u root -p > dump2.sql
導出結果如下:
從上面的結果可以看出,要導出2010-01-05的數據,需要將where條件設置成
2010-01-04 16:00:00 至 2010-01-05 15:59:59,這樣導出的結果才是想要的2010-01-05的數據。但是我們會發現,在導出的結果中,雖然id同步了,但是時間的"小時"部分還是和數據庫中的結果不同步,因此我們再做接下來的測試。
第四步:
我們先將數據庫中id為1、5、7、9、12、14、18的數據刪除。
delete from dump where id = 1;
。。。 。。。
刪完後如下圖:
接下來我們再將事先導出的2010-01-05的數據dump2.sql再導回到dump表中。
MySQL -u root -p test < /home/huitl/backuptest/dump2.sql
然後再查看數據庫中的dump表:
時間又變回來了!!!!!!
amazing...