赞城问哈
赞城问哈
  • 发布:2020-01-18 01:15
  • 更新:2020-04-16 10:15
  • 阅读:1436

【报Bug】plus.sqlite.executeSql 执行成功但不回调 succes

分类:nvue

详细问题描述

[内容]

UNI-APP 纯 NVUE 项目。
之前已经在 APP.VUE 中打开了数据库文件,并且回调显示成功。

//通过以下方式打开数据库  
    plus.sqlite.openDatabase({  
        name: 'DB',  
        path: '_doc/db.db',  
        success: function(e) {  
            console.log('本地数据库打开成功!');  
            app.globalData.isDBopen = true;  
        },  
        fail: function(e) {  
            console.log('本地数据库打开失败: ' + JSON.stringify(e));  
            uni.showModal({  
                title: '数据库打开失败',  
                content: e.message,  
                showCancel: false  
            });  
        }  
    });

另外一个页面执行下面语句:

plus.sqlite.executeSql({  
                name: 'DB',  
                sql: 'CREATE TABLE ddd (    id PRIMARY KEY      NOT NULL);',  
                succes: res => {  
                    console.log("执行成功",res);  
                },   
                fail: function(res) {  
                    console.log('执行错误:' , res);  
                    plus.sqlite.closeDatabase("DB")  
                },  
            });

重现步骤

[步骤]

[广告] 00:58:20.699 DCloud 新春招聘开启,欢迎前端、Android、C++/QT来投简历! 详情点击  
00:58:20.712 项目 'ZhangDan' 开始编译...  
00:58:22.928 编译器版本:2.5.7  
00:58:22.928 当前nvue编译模式:uni-app 。编译模式差异见:https://ask.dcloud.net.cn/article/36074  
00:58:22.931 请注意运行模式下,因日志输出、sourcemap以及未压缩源码等原因,性能和包体积,均不及发行模式。尤其是app-nvue的sourcemap影响较大  
00:58:22.932 正在编译中...  
00:58:32.730  DONE  Build complete. Watching for changes...  
00:58:32.732 项目 'ZhangDan' 编译成功.  
00:58:33.318 正在建立手机连接...  
00:58:35.072 手机端调试基座版本号为9.6.65,版本号相同,跳过基座更新  
00:58:35.344 正在同步手机端程序文件...  
00:58:36.248 同步手机端程序文件完成  
00:58:36.595 正在启动HBuilder调试基座...  
00:58:37.924 应用【XXXX】已启动...  
00:58:38.170 App Launch at App.vue:4  
00:58:38.190 数据库没有打开,执行打开数据库 at App.vue:8  
00:58:38.210 设置屏幕常亮成功 at App.vue:14  
00:58:38.230 App Show at App.vue:21  
00:58:38.251 本地数据库打开成功! at App.vue:43  
//===这里是新页面中执行的命令===  
00:58:50.493 执行初始化   
//===下面这条其实是执行成功了的,但是没有回调succes,反而回调了fai,并且没有返回任何错误信息l====  
//===通过进入手机查看生成的DB文件,发现ddd表已经创建成功===  
00:58:50.513 执行错误:, [Object] {}    
//===再次执行命令,肯定失败,应为已经创建了ddd表了也进一步验证了上一次执行是成功的。====  
00:58:58.487 执行初始化   
00:58:58.507 执行错误:, [Object] {"code":-1404,"message":"android.database.sqlite.SQLiteException: table ddd already exists (Sqlite code 1 ...}    

[结果]

[期望]

修复BUG或者提供替代解决办法。

[如果语言难以表述清晰,拍一个视频或截图,有图有真相]

IDE运行环境说明

[IDE版本号]

最新的测试版 2.5.7
最新的稳定版 2.5.1
都试过,依然如此。

[windows版本号]

WIN 10

uni-app运行环境说明

[运行端是h5或app或某个小程序?]

不考虑多端,仅用在APP端。

[运行端版本号]

最新的测试版 2.5.7
最新的稳定版 2.5.1
都试过,依然如此。

[项目是HBuilderX创建的]

[编译模式是老模板模式还是新的自定义组件模式?]

当前nvue编译模式:uni-app

App运行环境说明

[Android版本号]

安卓 10

[App问题请提供可重现问题的代码片段,你补充的细一点,问题就解决的快一点]

[App安装包或H5地址]

[可重现代码片段]

联系方式

[QQ]

2020-01-18 01:15 负责人:无 分享
已邀请:
赞城问哈

赞城问哈 (作者)

补充一下

修改为plus.sqlite.selectSql语句,执行 查询。
发现问题依旧,但是通过回调 fail ,居然能拿到数据??

            plus.sqlite.selectSql({  
                name: 'DB',  
                // sql: 'CREATE TABLE C ( id );',  
                // sql:"insert into C values('333')",  
                sql:"SELECT * FROM C",  
                succes:function(res)  {  
                    console.log("执行成功",res);  
                },   
                fail: function(res) {  
                    console.log('执行错误:' ,JSON.stringify(res));  
                },  
            });

执行结果如下

01:25:59.152 执行初始化   
01:25:59.171 执行错误:, [{"id":"333"},{"id":"333"},{"id":"333"},{"id":"333"},{"id":"333"},{"id":"333"},{"id":"333"},{"id":"333"},{"id":"333"},{"id":"333"},{"id":"333"},{"id":"333"}] 
赞城问哈

赞城问哈 (作者)

再补充一下,,,同样代码在,,
H5端,APP VUE 和 APP NVUE 项目下执行,都是同样的问题。

L_Code

L_Code

我也遇到这个问题了, 但是只是在 删数据的时候没有回调,也是安卓10。看来官方3个月并没有改这个BUG

该问题目前已经被锁定, 无法添加新回复