我正在尝试使用 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/