Не удается обновить базу данных Firefox sqlite, когда запущен Firefox-MacOS - PullRequest
1 голос
/ 08 декабря 2011

У меня есть следующий фрагмент кода для обновления базы данных sqlite расширения firefox

NSString * profileFolderPath = [[ @"~" stringByExpandingTildeInPath] stringByAppendingPathComponent:@"/Library/Application Support/Firefox/Profiles"];
    NSString *sqlitePath = [pathToProfileFolder stringByAppendingPathComponent:@"extensions.sqlite"];

    int rc = sqlite3_open([sqlitePath UTF8String], &db);
    if( rc )
    {
        NSLog(@"enable extension :%@\n",[NSString stringWithCString:sqlite3_errmsg(db)]);
        sqlite3_close(db);
        return NO;
    }
    else {
        NSLog(@"opened entensions db successfully \n");
    }
    // check the values for active and userDisabled fields
    rc = sqlite3_exec(db,"SELECT active,userDisabled FROM addon where id='myId.com'",sqliteCallback,0,&zErrMsg);
    if (rc!=SQLITE_OK ) {
        NSLog(@"error quering the entensions database  :%@\n",[NSString stringWithCString:zErrMsg]);
        if(zErrMsg)
        sqlite3_free(zErrMsg);
        sqlite3_close(db);
        return NO;
        //  handle error
    }

Когда приложение firefox не находится в рабочем состоянии, я могу прочитать значения, а также обновить базу данных, но когда Firefoxя не могу прочитать значения из базы данных, поскольку оператор sqlite3_exec возвращает значение 5, и в консоли отображается сообщение об ошибке «Ошибка при запросе базы данных расширений: база данных заблокирована».

Как я могурешить эту проблему. Пожалуйста, помогите.

1 Ответ

1 голос
/ 08 декабря 2011

Невозможно, чтобы b / c firefox оставил свой собственный файл конфигурации (а файл db расширений - это собственный файл конфигурации firefox) открытым, пока он работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...