2016-09-24 135 views
0

我得到了很多數據庫內的表。 奇怪的是,重新啓動mySQL後,一張表總是清空。 這似乎是一個TEMP表,但我懷疑這一點。 我在哪裏可以看到它是否是TEMP表或其他觸發此事件的東西。重新啓動mySQL服務器後表空了

談到觸發器,我在另一個表中更新了值但有一個觸發器,但我不認爲這是它的原因。

[編輯]

我的觸發查詢

BEGIN 
IF NEW.Discount <> OLD.Discount || NEW.Price <> OLD.Price || NEW.FirstYearDiscount <> OLD.FirstYearDiscount 
THEN 
INSERT INTO InvoiceTotal SET 
         PriceExcl = (SELECT 
         SUM((Price - (Price * (IF(Discount > FirstYearDiscount || Discount < 0, Discount, FirstYearDiscount)/100))) * InvoicePeriod) 
         FROM InvoiceItem WHERE InvoiceID = NEW.InvoiceID), 
         InvoiceID = NEW.InvoiceID 
       ON DUPLICATE KEY UPDATE 
       PriceExcl = (SELECT 
         SUM((Price - (Price * (IF(Discount > FirstYearDiscount || Discount < 0, Discount, FirstYearDiscount)/100))) * InvoicePeriod) 
         FROM InvoiceItem WHERE InvoiceID = NEW.InvoiceID); 
END IF; 
END 

這觸發WIL更新值,如果改變。

我還得到了一個cronjob,它在創建訂單時插入新值。

+0

我的第一個猜測是您將數據加載到一個事務中,並且永遠不會提交事務。 –

+0

我也像在其他表中一樣在表內插入數據。我已經像我的數據庫中的任何其他表一樣構建這張表。 –

+0

如何解決「重置SQL」?那是什麼意思?你的意思是你重新啓動MySQL服務器?還是你斷開連接並連接到數據庫?你正在執行某種SQL語句嗎? – spencer7593

回答

1

我做了一些挖掘,併爲每個表,點擊Operations(與頂部的標籤混合在一起),並注意到一個名爲Storage Engine的屬性。它最初設置爲內存,這似乎對我來說。所以我檢查了我的其他數據庫,發現他們都設置爲MyISAM。於是我將數據庫中有問題的表格更改爲MyISAM並重新啓動我的服務器以測試它們。數據現在保存了,沒有問題!

希望它可以幫助其他人誰具有同樣的問題(Y)

PS。感謝您的回覆球員

+2

你可能*想要InnoDB而不是MyISAM。研究更多。 –