Android Cordova WebSQL 无法计数 - 无法准备语句(1 太多 SQL 变量)
Android Cordova WebSQL can't count - could not prepare statement (1 too many SQL variables)
此错误仅发生在少数(最新型号 android 5)android 设备上。我给SQLite 这个好像数不过来!
executeSql("update email set IsMarkedAsRead=?, IsMarkedAsReadOnServer=?,IsFlagged=?,IsFlaggedOnServer=? where LocalEmailID=?", [email.IsMarkedAsRead, email.IsMarkedAsRead, email.IsFlagged, email.IsFlagged, email.LocalEmailID], null, sqlerror)
可变数组中有5个问号和5个元素,除非我要精神...
引发此错误:
无法准备语句(1 太多 SQL 变量)
然后抛出这个错误(大概第一个也会触发这个):
语句回调引发异常或语句错误回调没有return false
我们有一个使用标准 Web SQL 的 cordova 应用程序(如果需要,它使用浏览器公开的本机 Sqlite 或 MSOpenTech polyfill)。在我们调用 SQL 语句的代码库中有几个地方出现了这个错误。在某些情况下,没有参数,我们传递一个空数组,但它仍然说 1 too many variables。在大多数设备上没有错误 - 仅在某些 android 设备上发生。到目前为止,已经在至少两台设备上看到了这一点(这些是该领域的用户,尚未在测试中重现)。
存在此问题的示例设备:用户代理字符串为 Mozilla/5.0 (Linux; Android 5.0; SM-G900FD Build/LRX21T; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/50.0.2661.86 Mobile Safari/537.36
的 Samsung Galaxy S5 Duos
有什么想法吗?
感谢@nyluke 的评论。我最终将数据库引擎升级到这个 Cordova Sqlite 插件:
https://github.com/litehelpers/cordova-sqlite-ext
我希望这能解决问题。如果我收到更多错误报告,我将更新此答案。
更新
升级到 Cordova Sqlite 插件几个月后,我再也没有看到这个错误。绝对解决了问题。
不应推荐 WebSQL 标准 cordova 插件,因为它有问题。最大的问题是它将您限制为 50mb,并且删除数据不会恢复 space 所以最终您的应用程序会死掉...
此错误仅发生在少数(最新型号 android 5)android 设备上。我给SQLite 这个好像数不过来!
executeSql("update email set IsMarkedAsRead=?, IsMarkedAsReadOnServer=?,IsFlagged=?,IsFlaggedOnServer=? where LocalEmailID=?", [email.IsMarkedAsRead, email.IsMarkedAsRead, email.IsFlagged, email.IsFlagged, email.LocalEmailID], null, sqlerror)
可变数组中有5个问号和5个元素,除非我要精神...
引发此错误:
无法准备语句(1 太多 SQL 变量)
然后抛出这个错误(大概第一个也会触发这个):
语句回调引发异常或语句错误回调没有return false
我们有一个使用标准 Web SQL 的 cordova 应用程序(如果需要,它使用浏览器公开的本机 Sqlite 或 MSOpenTech polyfill)。在我们调用 SQL 语句的代码库中有几个地方出现了这个错误。在某些情况下,没有参数,我们传递一个空数组,但它仍然说 1 too many variables。在大多数设备上没有错误 - 仅在某些 android 设备上发生。到目前为止,已经在至少两台设备上看到了这一点(这些是该领域的用户,尚未在测试中重现)。
存在此问题的示例设备:用户代理字符串为 Mozilla/5.0 (Linux; Android 5.0; SM-G900FD Build/LRX21T; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/50.0.2661.86 Mobile Safari/537.36
有什么想法吗?
感谢@nyluke 的评论。我最终将数据库引擎升级到这个 Cordova Sqlite 插件: https://github.com/litehelpers/cordova-sqlite-ext
我希望这能解决问题。如果我收到更多错误报告,我将更新此答案。
更新
升级到 Cordova Sqlite 插件几个月后,我再也没有看到这个错误。绝对解决了问题。
不应推荐 WebSQL 标准 cordova 插件,因为它有问题。最大的问题是它将您限制为 50mb,并且删除数据不会恢复 space 所以最终您的应用程序会死掉...