google-chrome - chrome 索引数据库 setVersion 请求充满异常

标签 google-chrome indexeddb

我正在尝试使用 setVersion 让以下代码在 chrom 上运行(因为 onupgradeneeded 尚不可用)。

IDBVersionChangeRequest 充满了 IDBDatabaseException。并且无法调用 onsuccess 函数。我需要在 onsuccess 函数中创建一个 ObjectStore。

特别是这一行:request = browserDatabase._db.setVersion(browserDatabase._dbVersion.toString());

下面是我的代码。任何帮助将不胜感激...

browserDatabase._db = null;
browserDatabase._dbVersion = 4;
browserDatabase._dbName = "mediaStorageDB";
browserDatabase._storeName = "myStore";

var request = indexedDB.open(browserDatabase._dbName);

// database exist
request.onsuccess = function(e) 
{
    browserDatabase._db = e.target.result;

    // this is specifically for chrome, because it does not support onupgradeneeded
    if (browserDatabase._dbVersion != browserDatabase._db.version)
    {
        request = browserDatabase._db.setVersion(browserDatabase._dbVersion.toString());

        request.onerror = function(e) { alert("error") };

        request.onblocked = function(e)
        {
           b = 11;  // for some reason the code goes here...
        }

        request.onsuccess = function(e)
        {
            browserDatabase._db.createObjectStore(browserDatabase._storeName, {autoIncrement: true});
        }
    }

}

最佳答案

在您的代码示例中,您说您进入了 onblocked 回调。进入此回调的唯一方法是当您仍然打开与数据库的事务/连接时。 (除了您正在使用的事务/连接之外。)这意味着您必须先关闭所有其他事务/连接,然后才能调用 setVersion。

关于google-chrome - chrome 索引数据库 setVersion 请求充满异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13057011/

相关文章:

javascript - 全局变量只能由第一个函数访问?

webassembly - WASM IDBFS 不持久

google-chrome - 你如何以编程方式更改 chrome 上的默认下载目录?

javascript - [1,2,3].slice(1,undefined) 的值应该是多少?

storage - 在 beforeunload 上删除 indexeddb 的方法

javascript - 如何从 IndexedDB 中的 objectstore.put() 返回自动递增 ID?

javascript - 从indexeddb中删除特定存储

android - 调整 Chrome 地址栏屏蔽的问题 (Android)

google-chrome - 在哪里可以找到 Google Chrome 日志

jQuery 选择器 [名称=值] 不起作用