2

我正在尝试运行这些功能集:

function erorr(e) {
  // error getting database
  alert(e.message);
}

window.onload = function() {
    prepareDatabase(erorr);
};

function prepareDatabase(error) {
  return openDatabase('tasks13', '', 'Offline task storage', 3*1024*1024, function (db) {
    db.changeVersion('', '1.0', function (t) {
      t.executeSql('CREATE TABLE tasks (id, detail,status)');
    }, error);
  });
}

但是,运行后我得到一个错误current version of the database and 'oldVersion' argument do not match。不知道我在这里做错了什么。

4

2 回答 2

2

正确代码:

function prepareDatabase(error) {
  return openDatabase('tasks13', '', 'Offline task storage', 3*1024*1024, function (db) {
    db.changeVersion(db.version, '1.0', function (t) {
      t.executeSql('CREATE TABLE tasks (id, detail,status)');
    }, error);
  });
}

虽然可以打开任何可用版本的 WebSQL 数据库(通过传递一个空字符串作为版本标识符),但您需要在调用db.changeVersion. db 的当前版本以db.version.

这就是规范所说的:

检查 changeVersion() 方法的第一个参数的值是否与数据库的实际版本完全匹配。如果没有,则预检操作失败。

来自http://www.w3.org/TR/webdatabase/#asynchronous-database-api

于 2013-05-17T20:46:25.807 回答
-1

我遇到了同样的错误。

我没有使用 db.changeVersion 而是使用了以下更具命令性的逻辑风格:

this.db = window.openDatabase('myDb', '1.0', 'a comment', 5*1024*1024);
if (this.db) {
    this.db.transaction(function (tx) {
        tx.executeSql('CREATE TABLE IF NOT EXISTS myTable(...)',
            [],
            function(tx, rs) { },
            function(tx, err) { alert("Error in create table occurred: " + err) }
        );
    });
}

希望它也适用于你。

/弗雷德里克

于 2012-01-16T14:55:19.807 回答