如果我获取数据库对象(db)并使用命令
打开它var db = window.openDatabase("phr", "", "Cognovant PHR", 25000000);
// This should open whatever database is created, otherwise spawn one with a blank
// version number ("")
然后再做:
db.changeVersion(db.version, "2"); // Update database to version 2
console.log(db.version); //Should return "2", instead returns previous version of database
此代码,逐行完美地在iOS上完美运行(几乎比我希望的要好),但始终无法在Android上更改数据库版本。
如果有更好的方法可以做到这一点,或者需要在Android上进行某种替代方式,我会非常感谢这些信息。
答案 0 :(得分:3)
这实际上很容易解决。
只需将db.changeVersion的2参数版本更改为3参数版本。例如:
db.changeVersion(db.version, "2", function () {console.log("foobar")});
它会起作用。
答案 1 :(得分:0)
Android 2.2中也会出现此问题。
09-28 07:15:14.954:E / Web Console(280):TYPE_MISMATCH_ERR:DOM异常17:对象的类型与对象关联的参数的预期类型不兼容。在file:///android_asset/www/devbar/03%20db.js:158
我看到的唯一解决方案是使用自己的版本管理解决方案。
答案 2 :(得分:0)
请通过以下链接,介绍实现数据库版本控制的方法。
我可以使用所有2.3.x设备进行成功操作,但是使用4.x.x安卓设备会出现“无法调用方法changeVersion”等问题并且说方法未定义。
暂时我使用的代码如下,
if (db.changeVersion) {
db.changeVersion(oldVer, curVer, upgradeTableStructure, errorHandler, successDataHandler);
} else {
createTableStructure(db);//If Not exist for first time for 4.x.y devices
console.log('version changes not possible in this browser version.');
}
但这不是当前问题的正确解决方案,请提出一些解决方案。