1.解決上一篇遺留的bug
原因分析: 當(dāng)某張表需要添加一個(gè)int類(lèi)型的列時(shí)四敞,升級(jí)數(shù)據(jù)庫(kù)則會(huì)報(bào)NOT NULL約束不通過(guò),原因是 GreenDao建表時(shí)int 類(lèi)型 加了NOT NULL
- 解決方案一:在bean對(duì)象中不使用int類(lèi)型屬性叉庐,直接使用int的包裝類(lèi)Integer或者String代替种樱,個(gè)人感覺(jué)這是最簡(jiǎn)單的方式萧求。
-
解決方案二:通過(guò)報(bào)錯(cuò)信息托享,我們可以發(fā)現(xiàn)是MigrationHelper.java類(lèi)中的restoreData()方法報(bào)錯(cuò)骚烧,如下圖:
image
錯(cuò)誤原因就是int類(lèi)型數(shù)據(jù)在數(shù)據(jù)庫(kù)中不能為null,所有我們?cè)谄唇觭ql語(yǔ)句的時(shí)候給int類(lèi)型初始化一個(gè)默認(rèn)值0闰围,就可以完美解決這個(gè)問(wèn)題赃绊,修改后的restoreData()方法如下圖:
image