2010-04-13 4 views
2

Avec ce code:Google Gears - Base de données - VACUUM

var db = google.gears.factory.create('beta.database'); 
db.open('cominar'); 
db.execute('CREATE TABLE IF NOT EXISTS Ajax (AJAX_ID INTEGER PRIMARY KEY AUTOINCREMENT , MODULE TEXT, FUNCTION TEXT, CONTENT_JSON TEXT);'); 
db.execute('VACUUM;'); // nettoye la DB 

Je suis en train de clean the database (VACUUM) à chaque initialisation mais je reçois cette erreur:

Uncaught Error: Database operation failed. ERROR: authorization denied DETAILS: not authorized

La base de données a été créée par moi (le même page).

Merci!

Répondre

1

Je pense que cette opération n'est pas autorisée, donc l'équipe Gears n'a pas autorisé les utilisateurs à utiliser cette fonctionnalité de Sqlite. Toutes les opérations ne sont pas autorisées depuis JavaScript. Par exemple, attacher une base de données peut être dangereux, donc cela n'est pas autorisé.

+1

Dans la documentation Gears/Database, 'ATTACH et DETACH' sont désactivés mais il n'y a pas de mot sur VACUUM. Mais, 'PRAGMA auto_vacuum = 1;' est défini par défaut. – Sirber

+0

Sur http://code.google.com/apis/gears/api_database.html, dans les paramètres PRAGMA, il y a quelque chose comme: Au fil du temps, les fichiers de base de données peuvent être remplis avec des espaces où les données ont été supprimées. Ces lacunes peuvent être récupérées avec la commande VACUUM, mais VACUUM peut verrouiller la base de données pour des périodes de temps prolongées, ce qui complique l'intégration dans les applications interactives. Le mode auto_vacuum récupère ces écarts de manière incrémentielle lorsqu'ils sont générés. – qfel13

Questions connexes