2017-03-02 30 views
1

SQLiteデータベーステーブルからデータを削除しました。任意のSQLマネージャ(例:SQLiteStudio)でデータベースファイルを開くと、削除されたデータは存在しませんが、テキストエディタ(たとえば、notepad ++など)でデータベースファイルを開くと、削除されたデータが表示されます。最初の画像でSQLite削除されたデータはデータベースのバイナリファイルに残ります

SQLiteStudioは「スタン」が見られないこと、削除、顧客を示している。したがって、データ復元の可能性、など

例があります。しかし、Notepad ++で開かれたバイナリファイルは、顧客 "Stan"を表示します。

誰かが削除されたデータをSQLiteバイナリファイルから消える方法を知っていますか?

SQLiteStudio showing that deleted customer "Stan" is not seen

Binary file open in Notepad++ shows customer "Stan"

答えて

2

これは、ほとんどのデータベースの正常な動作です。 SQLiteは例外ではありません。ほとんどの場合、デザイナーはスピードと断片化を優先します。

ファイルからデータが完全に消えるようにするには、データベースをvacuumにする必要があります。

pragma auto_vacuum=FULLオプションを使用してデータベースを構築して、データベース自体を無効にすることができます。これを防止するために

1

PRAGMA secure_delete = ONを実行します。secure_deleteがオンの場合、SQLiteのはゼロで削除されたコンテンツを上書き

。 secure_deleteのデフォルト設定は、SQLITE_SECURE_DELETEコンパイル時オプションによって決定され、通常はオフです。 secure_deleteのオフ設定は、ディスクI/Oの量を減らしてパフォーマンスを向上させます。コンテンツの削除または更新後にフォレンジックトレースを残したくないアプリケーションは、削除または更新を実行する前にsecure_deleteプラグマを有効にするか、削除または更新後にVACUUMを実行する必要があります。

+0

私が探していたものです! – stanislavr

関連する問題