博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
记一次Android数据库升级bug
阅读量:5462 次
发布时间:2019-06-16

本文共 1088 字,大约阅读时间需要 3 分钟。

@Override    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {        LogUtils.d(TAG, "onUpgrade");        switch (oldVersion) {        case 1://version1            //……        case 2://version2            db.execSQL(sql_emoji);        case 3://version3            String leastAdd = "ALTER TABLE " + TABLE_NAME_LEAST + " ADD COLUMN format varchar(10)";  // 增加'format'字段  标识文字表情            db.execSQL(leastAdd);case 4:            LogUtils.d(TAG, "sql onUpgrade 4->5");            db.execSQL(sql_update_collect_url);//要加try catch,SQLiteConstraintException: UNIQUE constraint failed: least_use_expression.url            db.execSQL(sql_update_least_use_url);            db.execSQL(sql_compilation);            db.execSQL(sql_compilation_relation);      default:            break;        }    }

   如上是数据库升级代码,之前版本一直没有出过问题。从4-》5却又好几个用户反馈,但绝大多数用户没有问题,测试过程中也没发现问题。猜测是部分用户特定的数据导致数据库升级失败。仔细检查发现前2行对数据库操作可能会导致主键冲突,尝试加入try、catch后问题解决。

  结论:对于可能导致操作异常的sql语句增加try、catch,但是不能对所有sql语句增加try、catch,因为有的数据必须要执行才能保证正常功能。比如新建数据库等。

转载于:https://www.cnblogs.com/xuepeng0521/p/6587170.html

你可能感兴趣的文章
Make Object Properties Private
查看>>
Corosync fence盘替换
查看>>
hadoop完全分布式文件系统集群搭建
查看>>
内置函数
查看>>
登录界面 动画背景效果
查看>>
关于hession 随笔
查看>>
青柠网络验证
查看>>
kali系统网站部署笔记
查看>>
BZOJ2300 [HAOI2011] 防线修建
查看>>
B.xml
查看>>
NOIP知识点汇总
查看>>
Ant Design 常用命令汇总
查看>>
Python3 学习第十三弹: 模块学习五之pickle与json
查看>>
GameFreamWork框架----事件系统的应用
查看>>
数组复制方法
查看>>
4.23
查看>>
滚动栏事件
查看>>
later(文件中有解(0229.rar))
查看>>
c#代码发送邮件,还可以实现群发
查看>>
USACO 4.2 Job Processing(贪心)
查看>>