这样的代码:
var transaction = db.transaction(["main"], IDBTransaction.READ_WRITE);
var store = transaction.objectStore("main");
var request = store.add(object);
它在Firefox中正常运行,但在Chrome中它会在最后一行抛出“DATA_ERR:DOM IDBDatabase Exception 5”。这个例外是什么意思?如何解决?
答案 0 :(得分:2)
如果您的ObjectStore具有autoIncrement:true,则Chrome会抛出此错误。 [source]
答案 1 :(得分:1)
IndexedDB Exception 5表示“提供给操作的数据不符合要求”。这通常是因为您添加了一个唯一索引,例如,在提供缺少该属性的对象时。
我的猜测是你错过了一个索引属性,但为了确定地回答这个问题,我需要看到你的main
objectStore设置代码和object
的JSON表示。
答案 2 :(得分:1)
至少在两个不同的场合发生过这种情况:(a)当我升级数据库版本,并且正在写入旧版本时,以及(b)通过添加onerror和onsuccess处理程序奇怪地修复它的另一个案例就像这样。也许其中一个对你有用......
req.onerror = function () {
console.log("Oppsie!");
}
req.onsuccess = function () {
console.log("Hurrah!");
}
答案 3 :(得分:1)
此错误可能由多种原因引起。我相信它可能是Linux Chrome版本22.0.1197.0(145517)上的错误。我使用相同的代码,Firefox工作但Chrome引发了此错误。我试图清除一切。最后,我使用以下命令启动了Chrome:
./chrome --user-data-dir=/tmp/chrome
并且有效。