2016-09-24 6 views
0

データベース内に多数のテーブルがあります。 奇妙なことは、mySQLを再起動した後に1つのテーブルが常に空になることです。 それは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 

このトリガーウィル更新値です。

私はまた、注文時に新しい値を挿入するcronjobを手に入れました。

+0

私の最初の推測では、トランザクション内のデータをロードし、決してトランザクションをコミットしないことになります。 –

+0

私はまた、他のテーブルのようにテーブルの中にデータを挿入します。私は私のデータベースの中に他のテーブルのようにこのテーブルを構築しました。 –

+0

「SQLのリセット」についてはどうしたらいいですか?どういう意味ですか? MySQLサーバーを再起動しているということですか?または、データベースを切断して接続していますか?あなたは何らかの種類のSQL文を実行していますか? – spencer7593

答えて

1

Operations(上部のタブと混ざっている)をクリックして、Storage Engineと呼ばれるプロパティに気付きました。最初はというメモリに設定されていましたが、それは私には見えませんでした。だから私は他のデータベースをチェックし、それらがすべてMyISAMに設定されていることに気づいた。そこで、私が問題を抱えていたデータベースのテーブルをMyISAMに変更し、私のサーバーを再テストしてチェックをテストしました。データは問題なく保存されました!

同じ問題を抱えている人(Y)

PSに役立つことを願っています。回答のおかげでありがとう

+2

あなたはおそらくMyISAMではなくInnoDBを望んでいます。もっと研究してください。 –

関連する問題