HTML5-Web-SQL-DB - Maximum-Tabelle Größe?

Ich bin Teil des Weges durch den Aufbau einer relativ komplexen HTML5-web-app, die ruft seine Daten aus einem Web-Service zum Auffüllen der Web-SQL-Datenbank.

War alles gut ging mit den test-Daten, dann versuchte ich mit einigen realen Daten (a-Tabelle mit etwa 10 Spalten und über 180.000 Zeilen) und lief in einige Probleme.

Ich bin das senden der SQL-Antworten in "chunks" von 500 Einsätzen und dann eine Transaktion ausgeführt wird und greifen die nächste Antwort vom Web Service. Dies funktioniert gut, bis die Tabelle wird auf rund 9000 Zeilen und dann ist es einfach nicht mehr. An diesem Punkt ist die Größe der Datenbankdatei ist noch unter 2MB und ich habe die max Größe bis zu 20 MB, also denke ich nicht, dass ist das Problem.

Ich habe es geschafft, wieder ein ähnliches Problem mit simpler code, so dass andere sehen können, was ich bin reden über. (Aus irgendeinem Grund kann ich nicht bekommen es alle, um in den "code-block" (sorry))

//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']);
        }

    });
};

Bitte ignorieren Sie den string-Wert, es ist nur etwas pad aus der varchar-Größe (SQLite scheint nicht zu pad ein char-Typ).

In der "19000" Iterationen oben (oder unten) die Tabelle wird erstellt, in Chrom, mit alle Daten korrekt eingegeben. Die Datenbank wird um die 4MB. Safari, lassen Sie mich fügen Sie weitere Zeilen und ich habe die DB-Größe um bis zu 10 MB in Safari.

Wenn ich versuchen, löschen Sie den Inhalt der Tabelle und erhöht die Anzahl der Iterationen zu 20.000, Chrome nicht die Transaktion abzuschließen.

Hat jemand irgendwelche Ideen, was könnte die Ursache sein?

Ich hoffe, ich konnte das Problem detailliert genug. Fühlen Sie bitte sich frei, Fragen zu stellen, wenn ich schon zu vage.

Vielen Dank für Ihre Hilfe.

Update: ich habe versucht, hinzufügen von Fehlerbehandlung und die Antwort ist "constraint failed". Ich habe getan, ein wenig Forschung in das, was kann die Ursache sein, aber ich bin immer noch kämpfen, um eine Antwort zu finden.

InformationsquelleAutor fastAwake | 2010-10-28

Schreibe einen Kommentar