gpt4 book ai didi

sql - HTML5 Web SQL DB - 最大表大小?

转载 作者:搜寻专家 更新时间:2023-10-31 21:56:18 25 4
gpt4 key购买 nike

我正在构建一个相当复杂的 HTML5 网络应用程序,该应用程序从网络服务检索其数据以填充 Web SQL 数据库。

测试数据一切顺利,然后我尝试使用一些真实数据(一个包含大约 10 列和超过 180,000 行的表)并遇到了一些问题。

我以 500 个插入的“ block ”形式发送 SQL 响应,然后运行事务并从 Web 服务获取下一个响应。这工作正常,直到表格达到大约 9000 行,然后就不再需要了。此时数据库文件大小仍低于 2MB,我将最大大小设置为 20MB,所以我认为这不是问题所在。

我已经设法用更简单的代码重新创建了一个类似的问题,因此其他人可以看到我在说什么。 (出于某种原因,我无法将其全部留在“代码块”中(抱歉))

//var qsParm = new Array();

var bigData = {};
bigData.webdb = {};

var readOnly = false;

bigData.webdb.open = function() {
bigData.webdb.db = null;
var dbSize = 20 * 1024 * 1024; // 20MB
infinity.webdb.db = openDatabase('bigData', '', 'bigData DATA', dbSize);
};

bigData.webdb.onError = function(tx, e) {
alert('Something unexpected happened: ' + e.message);
};


bigData.webdb.createTable = function() {
var db = bigData.webdb.db;
db.transaction(function(tx) {
tx.executeSql("CREATE TABLE IF NOT EXISTS [MattTest] ([Foo] VARCHAR(32) PRIMARY KEY ASC, [Bar] VARCHAR(20), [Will] VARCHAR(100), [Smith] VARCHAR(100))", []);

});

db.transaction(function(tx) {
var i=0;
for(i=0; i<19000; i++)

tx.executeSql("INSERT INTO [MattTest] (Foo, Bar, Will, Smith) VALUES (?,?,?,?)", ['Foo' + i, 'Bar', 'Now this is the story all about how My life got flipped turned upside down', 'And Id like to take a minute just sit right there Ill tell you how I became the prince of a town called Bel Air']);
}

});
};

请忽略字符串值,它只是填充 varchar 大小的东西(SQLite 似乎不会填充 char 类型)。

在上面的“19000”次迭代(或下面的任何数字)中,将在 Chrome 中创建表格,并正确输入所有数据。数据库将约为 4MB。 Safari 允许我添加更多行,我在 Safari 中的数据库大小高达 10MB 左右。

如果我尝试删除表的内容并将迭代次数增加到 20,000,Chrome 不会完成事务。

有没有人知道是什么原因造成的?

我希望我已经足够详细地解释了这个问题。如果我说得太含糊,请随时提出任何问题。

感谢您的帮助。

更新:我尝试添加一些错误处理,响应是“约束失败”。我已经对可能导致此问题的原因做了一些研究,但我仍在努力寻找答案。

最佳答案

您可以创建一个简单的 chrome 扩展来消除本地数据库大小的限制。

关于sql - HTML5 Web SQL DB - 最大表大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4039735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com