首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cordova-sqlitePlugin未能打开数据库

Cordova-sqlitePlugin未能打开数据库
EN

Stack Overflow用户
提问于 2016-10-12 21:00:41
回答 1查看 3.1K关注 0票数 1

我目前正在使用Ionic框架做一个混合应用程序。

上周,一切都很顺利,没有修改插件的任何东西,它就停止了工作,我还没有找到任何解决方案或足够好的方法的线程(只有一个)。

我在安卓和iOS设备上运行。

亚行日志:

代码语言:javascript
复制
I/chromium( 1844): [INFO:CONSOLE(175)] "OPEN database: my.db", source: file:///android_asset/www/plugins/cordova-sqlite-storage/www/SQLitePlugin.js (175)
I/chromium( 1844): [INFO:CONSOLE(106)] "new transaction is waiting for open operation", source: file:///android_asset/www/plugins/cordova-sqlite-storage/www/SQLitePlugin.js (106)
I/chromium( 1844): [INFO:CONSOLE(197)] "OPEN database: my.db FAILED, aborting any pending transactions", source: file:///android_asset/www/plugins/cordova-sqlite-storage/www/SQLitePlugin.js (197)
I/chromium( 1844): [INFO:CONSOLE(83)] "Could not open database", source: file:///android_asset/www/plugins/cordova-sqlite-storage/www/SQLitePlugin.js (83)

XCode控制台日志显示不多(一点也不显示).

Cordova已安装插件:

代码语言:javascript
复制
com.googlemaps.ios 1.13.0 "Google Map iOS SDK for Cordova"
cordova-plugin-compat 1.0.0 "Compat"
cordova-plugin-console 1.0.4 "Console"
cordova-plugin-dbcopy 1.0.4 "sqlDB"
cordova-plugin-device 1.1.2 "Device"
cordova-plugin-file 4.3.0 "File"
cordova-plugin-geolocation 2.4.0 "Geolocation"
cordova-plugin-googlemaps 1.3.9 "phonegap-googlemaps-plugin"
cordova-plugin-splashscreen 3.2.2 "Splashscreen"
cordova-plugin-sqlite-2 1.0.4 "SQLitePlugin"
cordova-plugin-statusbar 2.1.3 "StatusBar"
cordova-plugin-whitelist 1.2.2 "Whitelist"
cordova-sqlite-storage 1.4.8 "Cordova sqlite storage plugin"
ionic-plugin-keyboard 2.2.1 "Keyboard"

Implementation

代码语言:javascript
复制
angular.module('starter.controllers', [])
.controller('RoutesCtrl', function($scope, $ionicPlatform, $http) {
    // Database functions…
    $ionicPlatform.copyDatabaseFile = function(db_name)
    {

        var sourceFileName = cordova.file.applicationDirectory + 'www/' + db_name;
        var targetDirName = cordova.file.dataDirectory;

        return Promise.all([
            new Promise(function (resolve, reject) {
                resolveLocalFileSystemURL(sourceFileName, resolve, reject);
            }),
            new Promise(function (resolve, reject) {
                resolveLocalFileSystemURL(targetDirName, resolve, reject);
            })
        ]).then(function (files) {
            var sourceFile = files[0];
            var targetDir = files[1];

            return new Promise(function (resolve, reject) {
                targetDir.getFile(db_name, {}, resolve, reject);
            }).then(function () {
                console.log("file already copied");
            }).catch(function () {
                console.log("file doesn't exist, copying it");
                return new Promise(function (resolve, reject) {
                    sourceFile.copyTo(targetDir, db_name, resolve, reject);
                }).then(function () {
                    console.log("database file copied");
                });
            });
        });
    }
    $ionicPlatform.openDB = function()
    {

        if(isIOS){
            db = window.sqlitePlugin.openDatabase({name: db_name, iosDatabaseLocation: 'defaut'});
        } else {
            db = window.sqlitePlugin.openDatabase({name: db_name, location: 'default'});
        }
        return db;
    }



     // This function is called later on on the code.
    $ionicPlatform.runDbQuery = function(query)
    {
        db = $ionicPlatform.openDB();
        db.readTransaction(function (txn) {
            txn.executeSql(query, [], function (tx, res) {
                console.log(JSON.stringify(res));
                return res;
            });
        });
    }
    //code continues…

正如我之前提到的,上述代码上周在Android上运行得很好,现在却没有了。实际上,它复制预填充数据库的部分运行得很好(回调日志显示了这一点)。

我想知道是否有更多的人遇到了这个烦人的问题,并请引导我走过正确的道路。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-18 17:19:12

我不知道原因,但:

代码语言:javascript
复制
$ sudo ionic plugins rm cordova-plugin-sqlite-2
$ sudo ionic plugins add cordova-plugin-sqlite-2

当您为相反的操作系统(iOS & Android)构建时,似乎发生了一些事情:某些东西停止以正确的方式工作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40008265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档