sqlite - 如何从 JavaScript 压缩 WebSQL 数据库

标签 sqlite html web-sql

我使用 HTML5 + WebSQL 开发了一个应用程序,它可以将数据从本地数据库同步到服务器。

删除数据后,sqlite数据库文件大小不变。我知道这包含空白空间,当插入新数据时它将被填充,但由于限制,我想保持尽可能小的大小。

我知道 sqlite 中的 VACUUM 命令可以压缩数据库并删除未使用的空间,但是当我尝试从 JavaScript 在 WebSQL 数据库上运行它时,它失败并显示错误“逻辑错误或缺少数据库”。从浏览器外部运行命令工作正常。

我的问题是:

  1. 可以从 JavaScript 以某种方式执行 VACUUM 命令吗?

  2. 浏览器会自动执行此操作吗?它最终会被调用吗? (找不到关于此的任何文档)

感谢您的帮助。

最佳答案

由于 WebSQL 的放弃/工作停止的性质,错误/功能请求不会——也不会——永远得到尊重。 Chromium 错误也存在同样的问题,例如,没有响应。

看来你的两个问题是最坏的情况:

1:因为vacuum命令只有在没有连接数据库的情况下才能运行,所以只能在命令行运行。似乎在浏览器或 javascript 中没有“断开数据库连接然后运行 ​​VACUUM”命令。

2:不要指望它。目前尚不清楚它是否会在达到最大大小限制时运行,即使它运行了,您也会在达到最大大小限制之前很久就注意到速度明显下降。

最多您可能能够向插件或 javascript 上下文之外的东西发送命令,它本身可以运行命令...现在已弃用,因此它是一个有争议的问题。对于遗留应用程序,如果您必须拥有该功能,则必须在简单的网页/js 上下文之外完成。

future /现代应用程序现在使用 IndexedDB;仅针对遗留应用程序回答了此问题。

关于sqlite - 如何从 JavaScript 压缩 WebSQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6763981/

相关文章:

sql - LIMIT 1的替代方案,以提取日期范围以及前后的第一个条目?

html - 名称-值对的语义和结构

javascript - 我的全局变量在 transcationSuccess 回调中显示为未定义 - 无法弄清楚为什么

android - 在 WebSQL 上插入 blob

iphone - 核心数据模型版本迁移

json - Bash sqlite3 行 |如何转换成JSON格式

javascript - 选项卡和子选项卡

android - HTML5 Web SQL 数据库问题

java - 执行 sqlite 查询,没有任何反应

html - CSS3 动画 - 图像的动画宽度