2

像这样的代码:

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”。这个例外是什么意思?如何解决?

4

4 回答 4

2

如果您的 ObjectStore 具有 autoIncrement:true,Chrome 会抛出此错误。 [来源]

于 2012-05-04T00:42:11.450 回答
1

IndexedDB Exception 5表示“提供给操作的数据不符合要求”。这通常是因为您添加了一个唯一索引,例如,同时提供了一个缺少该属性的对象。

我的猜测是您缺少索引属性,但要确定地回答这个问题,我需要查看您的mainobjectStore 设置代码和object.

于 2012-05-01T22:30:38.980 回答
1

这至少在 2 个不同的场合发生在我身上:(a)当我升级数据库版本并写入旧版本时,以及(b)另一种情况,当它通过添加 onerror 和 onsuccess 处理程序奇怪地得到修复时,就像这样. 也许其中之一对您有用...

req.onerror = function () {
    console.log("Oppsie!");
}
req.onsuccess = function () {
    console.log("Hurrah!");
}
于 2012-05-08T07:56:58.300 回答
1

此错误可能由多种原因引起。我相信这可能是 Linux Chrome 版本 22.0.1197.0 (145517) 上的错误。我使用了相同的代码,Firefox 工作但 Chrome 引发了这个错误。我试图清除一切。最后,我使用以下命令启动了 Chrome:

./chrome --user-data-dir=/tmp/chrome

它奏效了。

于 2012-07-13T05:49:48.737 回答