我使用HTML5 + WebSQL开发了一个应用程序,它将本地数据库中的数据同步到服务器。
删除数据时,sqlite数据库文件的大小保持不变。我知道这包含空格,当插入新数据时它会被填充但我希望由于限制而保持尽可能小的尺寸。
我知道sqlite中的VACUUM命令可以压缩数据库并删除未使用的空间,但是当我尝试从JavaScript在WebSQL数据库上运行它时,它失败并显示错误“逻辑错误或缺少数据库”。从浏览器外部运行命令可以正常工作。
我的问题是:
可以从JavaScript以某种方式执行VACUUM命令吗?
浏览器是否会自动实现此功能并最终调用? (找不到任何关于此的文件)
感谢您的帮助。
答案 0 :(得分:4)
由于WebSQL的被忽视/工作已停止,因此错误/功能请求不会 - 也不会 - 被尊重。例如,Chromium bug存在同样的问题,没有响应。
看来你的两个问题最糟糕的是:
1:因为vacuum命令只能在未连接到数据库时运行,所以它只能从命令行运行。似乎在浏览器或javascript中没有“断开数据库然后运行VACUUM”命令。
2:不要指望它。目前尚不清楚它是否会在达到最大尺寸限制时运行,即使它达到最大尺寸限制之前你也会注意到主要的减速。
最多你可能会发送一个命令到一个插件,或javascript上下文之外的东西,它本身可以运行命令......它现在已被弃用,所以这是一个没有实际意义的点。对于遗留应用程序,如果必须具有该功能,则必须在简单的网页/ js上下文之外完成。
未来/现代应用程序现在使用IndexedDB;这个问题仅针对遗留应用程序得到了回答。