2010-04-13 76 views
2

有了这个代码:谷歌齿轮 - 数据库 - 真空

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 

我想clean the database (VACUUM)在每个初始化,但我得到这个错误:

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

该数据库是由我创造(的相同的页面)。

谢谢!

回答

1

我认为这是不允许操作的,所以Gears团队不允许用户使用Sqlite的这个特性。并非所有的操作都是来自JavaScript的。例如,附加数据库可能很危险,所以不允许。

+1

在齿轮/数据库文档中,“ATTACH和DETACH”被禁用,但没有关于VACUUM的信息。但是,'PRAGMA auto_vacuum = 1;'是默认设置的。 – Sirber 2010-04-13 20:23:13

+0

在PRAGMA设置中的http://code.google.com/apis/gears/api_database.html中有这样的内容: 随着时间的推移,数据库文件可能会填满数据已被删除的空白。使用VACUUM命令可以恢复这些间隙,但VACUUM可以长时间锁定数据库,这使得集成到交互式应用程序中成为一项挑战。 auto_vacuum模式在生成时逐渐恢复这些间隙。 – qfel13 2010-04-18 19:12:19