2011-12-15 64 views
2

我試圖運行這些組的功能:網絡SQL錯誤「數據庫的當前版本和`oldVersion`參數不匹配」

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。 不知道我在這裏做什麼錯。

回答

-2

我遇到了同樣的錯誤。

我使用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) } 
     ); 
    }); 
} 

希望它爲你工作爲好。

/弗雷德裏克

3

正確的代碼:

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

+0

`db.version`是當第一次創建分貝一個空字符串 – RezaRahmati 2015-01-02 09:13:13

相關問題