HTML5 Web SQL DB - Maximum de la taille de la table?

Je suis à mi-chemin à travers la construction d'une assez complexe HTML5 web app, qui permet de récupérer ses données à partir d'un Service Web pour remplir le Web SQL databse.

Tout allait bien avec les données de test, puis j'ai essayé d'utiliser certaines données réelles (une table, avec près de 10 cols et plus de 180 000 lignes) et a rencontré quelques problèmes.

Je vous envoie les réponses SQL en "morceaux" de 500 inserts et puis l'exécution d'une transaction et de l'accaparement de la prochaine réponse du Service Web. Cela fonctionne bien, jusqu'à ce que le tableau devient à environ 9000 lignes et puis il ne peut pas en prendre plus. À ce stade, la base de données de la taille du fichier est toujours sous 2 mo et j'ai la taille maximum fixé à 20 mo, donc je ne pense pas que c'est la question.

J'ai réussi à recréer un problème similaire avec un simple code, afin que d'autres puissent voir de quoi je parle. (Pour une raison que je ne peux pas obtenir tout pour rester dans le "bloc de code" (désolé))

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

    });
};

S'il vous plaît ignorer la chaîne de valeur, c'est juste quelque chose pour combler la varchar taille (SQLite n'apparaît pas de tampon, un type char).

À la "19000" itérations ci-dessus (ou en dessous) de la table sera créée en Chrome, avec toutes les données saisies correctement. La base de données sera d'environ 4 MO. Safari permettez-moi d'ajouter plus de lignes et j'ai eu la DB taille jusqu'à environ 10 mo dans Safari.

Si j'essaie de supprimer le contenu de la table et d'augmenter le nombre d'itérations à 20 000, Chrome ne pas terminer la transaction.

Quelqu'un a une idée de ce qui pourrait être la cause?

J'espère que je vous ai expliqué le problème en donnant suffisamment de détails. N'hésitez pas à poser des questions, si j'ai été trop vague.

Merci pour votre aide.

Mise à jour: j'ai essayé d'ajouter une gestion d'erreur et la réponse est "contrainte a échoué". J'ai fait un peu de recherche sur ce qui peut en être la cause, mais je suis toujours des difficultés à trouver une réponse.

OriginalL'auteur fastAwake | 2010-10-28