Sqlite Phonegap web sql数据库创建错误:没有这样的表:cacheGroups

Sqlite Phonegap web sql数据库创建错误:没有这样的表:cacheGroups,sqlite,cordova,web-sql,Sqlite,Cordova,Web Sql,我正在使用Phonegap开发一个移动应用程序。我的应用程序中有一个web sql数据库。第一次启动应用程序时,将创建并填充数据库。下面是我用于创建数据库的代码: var db = window.openDatabase('littera', '1.0', 'Littera DB', 5 * 1024 * 1024); db.transaction(function(tx) { tx.executeSql('CREATE TABLE IF NOT E

我正在使用Phonegap开发一个移动应用程序。我的应用程序中有一个web sql数据库。第一次启动应用程序时,将创建并填充数据库。下面是我用于创建数据库的代码:

    var db = window.openDatabase('littera', '1.0', 'Littera DB', 5 * 1024 * 1024);

        db.transaction(function(tx) {
          tx.executeSql('CREATE TABLE IF NOT EXISTS quote (id integer primary key, author_id integer, category text, content text, favourite integer)');
          tx.executeSql('CREATE TABLE IF NOT EXISTS author (id integer primary key, name text, short_bio text, media text)');
          callback();
        }, function(e) {
            console.log("ERROR CREATING DB: " + e.message);
            callback();
        });
我第一次启动应用程序时,发生了与数据库创建相关的以下错误(请注意,这只是第一次发生,应用程序在所有其他启动中都能完美工作):


生成错误的表不是我自己的表,而是一些由WebSQL在幕后创建的表,这些表可以发挥他自己的作用。我想在创建数据库的过程中出现了一些问题,因为我在以后的启动中没有同样的错误。我遗漏了什么吗?

您没有提供完整的详细信息。

从您的问题来看,您似乎正在使用一个第三方库,该库在启动时自动在sqlite中创建DB 从表名缓存组、缓存和DeletedCacheResources可以推断,应用程序使用这些表来存储缓存的信息以提高性能。
由于这些表用于在应用程序运行后存储数据,因此它们在应用程序第一次运行期间将不可用。这就是为什么我认为在应用程序的第一次运行时,它会出现错误。
一旦您开始使用该应用程序,它将创建缓存表,并在接下来的运行中开始使用它们。

为了避免应用程序中出现错误,您需要编写逻辑以防止缓存表逻辑在第一次运行时运行。
您需要创建/存储一些变量,这些变量将在第一次运行应用程序时保持不变,然后使用该变量来防止运行缓存的表逻辑。
e、 g伪代码

Get the App_first_run variable.

if ( App_first_run == true )
{
   Do not run the cached table logic.
} 

我没有为数据库使用任何第三方库,webkit浏览器内置了对web sql的支持(并且在基于webkit的系统浏览器中运行phonegap应用程序)。每当我创建新数据库时,这些表都是由浏览器创建的。至少在我开发的应用程序中,我没有看到过这样的错误。是导致应用程序出现任何问题的错误。如果不是,我建议您忽略它,因为它可能与cordova的内部工作有关。您在开发哪个版本的cordova?我使用的是Phonegap 4.1.2-0.22.10。是的,在第一次启动应用程序时,它无法从数据库中获取一些数据。
Get the App_first_run variable.

if ( App_first_run == true )
{
   Do not run the cached table logic.
}