1

Firefox で。初期化(1回)

var r, dbname = 'a1', db = mozIndexedDB;

初め、

try { r = db.open(dbname, 5); } catch (ex) { console.log(ex); }
r.onupgradeneeded = r.onsuccess = r.onblocked = r.onerror = function (e) { console.log(e); };

想定どおりに2つのイベントが発生します。次に、データベースを閉じます。

r.result.close()

最後に、データベースを削除します。

try { r = db.deleteDatabase(dbname); } catch (ex) { console.log(ex); }
r.onsuccess = r.onerror = r.onblocked = function (e) { console.log(e); };

正常に削除されます。ただし、最初のステップのスクリプト (db を開く) の実行を開始すると、「onupgradeneeded」が起動されず、データベースが削除される前のバージョンで開かれます。それはバグですか、それとも間違っていますか?

ありがとう。

4

1 に答える 1

1

あなたは何も悪いことをしていないようです。価値があるのは、deleteDatabase実装が FF で比較的新しいため、バグが見つかった可能性があるためです。

私が試みることの 1 つは、ブラウザを再起動する前に、まず IndexeDB をサポートする .sqlite データベース ファイルを調べて物理的に削除することですそれはキャッシングの可能性があります。以下のファイルへのパス。

PC の場合:

C:\Users\username\AppData\Roaming\Mozilla\Firefox\Profiles\<*>.default\indexedDB

Mac の場合:

/Users/username/Library/Application\ Support/Firefox/Profiles/<*>.default/indexedDB/

データベース バージョンを含む .sqlite ファイル内のテーブルは と呼ばれdatabase、name と version の 2 つの列があります。データベースはそのテーブルにある必要があり、バージョン番号がリストされている必要があります。

データベースを削除すると、その行が削除されます。そうでない場合は、バグが見つかったと思います。

最悪の場合、indexedDBプロファイル フォルダー内のディレクトリ全体を削除し、再インストールして、新規インストールが機能することを確認します。

于 2012-06-26T23:32:08.970 に答える