2017-10-19 9 views
0

私たちはPOSシステムを搭載した多くのコンピュータを所有していますが、それぞれにはすべての売上を登録するローカルデータベースがあり、その日の終わりにデータを取り込んでマスターデータベース現時点では、一部のコンピュータでは、MySQLがロールバックのように見えることがわかりました。たとえば、テーブルの設定にシステムをインストールし、自動インクリメントIDを持ち、最初の販売IDを1000に設定すると、しかし、1001,1002,1003などの他の販売では、しかし、ある日、IDが5000だった場合、データベースはテーブル内のすべてのデータをリセットし、1000で再開します。何が起こっているか考えてください。MySqlは自動的にロールバックのようになります

ありがとうございます!

答えて

0

何が起こったかを理解するための詳細が必要です。

MySQLがシャットダウン(電源障害など)した後に再起動された後、AUTO_INCREMENTを持つ各InnoDBテーブルで最初に実行されることは次のIDを計算することですSELECT MAX(id)+1 FROM tbl

これはあなたの状況を説明していない、ここであなたをかむことの落とし穴がある場合でも:

  1. COMMITそれをして)ID 1234を作成
  2. 1234(およびCOMMIT)を削除
  3. 再起動のMySQL (正常またはクラッシュのため)
  4. 作成する次のIDは1234です。これは、IDを再利用できないと想定すると悪いことがあります。

再起動しなかった場合は、手順4で1235が作成され、1234は永遠に「焼き付け」されます。

(注:バージョン8.0の変更この動作。)

+0

問題がIDで起こる、すべてのデータで、3ヶ月前に挿入されたすべてのレコードが削除されたデータベースが初めてのように開始されていないだけということになりますロールバックのように構成されました –

+0

DBAがポイント・イン・タイム・ダンプをリロードするなど、何らかの他のアクションなしではこのようなことは起こりません。レプリケーションは関係していますか?あなたは "SQLインジェクション"から保護しますか?あなたのサイトはハッキングされましたか?あなたは悪い 'DELETE'を探すのに十分遠くまで行くbinlogsを持っていますか? etc –

+0

すみません、binlogsにアクセスする方法を教えてください。初心者です。 –

関連する問題