2012-06-26 2 views
1

В Firefox. Init (один раз)IndexedDB deleteDatabase не сбрасывает версию

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); }; 

вы получите два события обжигали, как должно быть. Затем закройте базу данных,

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» не запускается и открывается база данных с версией, которую она имела до того, как она была удалена. Это ошибка, или я делаю что-то неправильно?

Спасибо.

ответ

1

Вы, кажется, ничего плохого не делаете. Для чего это стоит, я считаю, что реализация deleteDatabase относительно новая в FF, поэтому, возможно, вы обнаружили ошибку.

Одна вещь, которую я постараюсь, это сначала inspect, а затем физически удалить файлы базы данных индексирования IndexeDB .sqlite перед перезапуском браузера. Это может быть кеширование. Пути к этим файлам ниже.

На ПК:

C: \ Users \ имя пользователя \ AppData \ Roaming \ Mozilla \ Firefox \ Profiles \ < *> по умолчанию \ IndexedDB

На Mac:.

/Users/имя пользователя/Library/Application \ Поддержка/Firefox/Profiles/< *>. По умолчанию/IndexedDB/

Таблица в файле .sqlite, имеющем версию базы данных, называется database, и есть два столбца, имя и версия. Ваша база данных должна находиться в этой таблице и должна указывать номер версии.

Удаление базы данных должно удалить эту строку. Если это не так, я считаю, что вы обнаружили ошибку.

Худшее ухудшается, удалите весь каталог в папке профиля indexedDB и переустановите его, чтобы проверить свежие установки.

+3

Сегодня я узнал, что это я вызываю это странное поведение, а не Firefox. Я использую sqlite db viewer, который предположительно блокирует файл sqlite, и Firefox не может сбросить версию. Всякий раз, когда я выхожу из своего окна просмотра sqlite, код выше (и мои тесты) начинает работать нормально! Думал, что все еще странно, что Firefox не срабатывает/не выдает ошибки. – David

+0

Очень интересно. Слишком много смысла. Спасибо за отчетность, я уверен, что кто-то столкнется с этим в какой-то момент, а ИБР соберет пар. – buley

+1

Был бы очень признателен, если бы вы могли попытаться выяснить, видите ли вы по-прежнему такое же поведение. Мы действительно должны увольнять событие «ошибка». Мы исправили некоторые ошибки с момента начальной реализации deleteDatabase, возможно, включая этот.Если вы все еще можете воспроизвести ошибку в ночной сборке, пожалуйста, сообщите об ошибке, и я буду уверен, что она будет исправлена. –

Смежные вопросы