Недопустимые проблемы со схемой в комнате после Android Обновление Studio до 3.6 - PullRequest
0 голосов
/ 25 февраля 2020

Мне очень трудно понять, что происходит, потому что мое приложение работало абсолютно нормально всего один день go.

Теперь я обновился до Android Studio 3.6 Build #AI-192.7142.36.36.6200805, built on February 12, 2020. Во-первых, мой эмулятор перестал работать. Я удалил это и создал новый, столкнулся с некоторыми другими проблемами и оставил это на ночь.

Теперь сегодня эмулятор работает, но внезапно я получаю:

java.lang.IllegalStateException: Pre-packaged database has an invalid schema: Challenges(com.dev.solidmind.db.entity.Challenge).
     Expected:
    TableInfo{name='Challenges', columns={id=Column{name='id', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=1, defaultValue='null'}, summary=Column{name='summary', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, name=Column{name='name', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, helpContentHow=Column{name='helpContentHow', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, activePartContent=Column{name='activePartContent', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, isActive=Column{name='isActive', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, content=Column{name='content', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, type=Column{name='type', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, sources=Column{name='sources', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, helpContentWhy=Column{name='helpContentWhy', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}}, foreignKeys=[], indices=[]}
     Found:
    TableInfo{name='Challenges', columns={id=Column{name='id', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=1, defaultValue='null'}, summary=Column{name='summary', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, name=Column{name='name', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, helpContentHow=Column{name='helpContentHow', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, activePartContent=Column{name='activePartContent', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, isActive=Column{name='isActive', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=0, defaultValue='null'}, content=Column{name='content', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, type=Column{name='type', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, sources=Column{name='sources', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, helpContentWhy=Column{name='helpContentWhy', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}}, foreignKeys=[], indices=[]}

Сообщая мне, что мой идентификатор первичного ключа и логический isActive, как ожидается, будут notNull = true? Но они не указаны как notNull где-либо!
Откуда он получил информацию? Мой класс вызова выглядит следующим образом:

@Entity(tableName = "Challenges")
public class Challenge {

    @PrimaryKey(autoGenerate = true)
    private int id = 0;

    private final String name;
    @NonNull
    private final ChallengeType type;
    private final String summary;
    @NonNull
    private final String content;
    private final String activePartContent;
    private final String helpContentWhy;
    private final String helpContentHow;
    private final String sources;
    private boolean isActive;

Только два указанных поля c не равны NULL, и файл DB также ничего не говорит о notNull для этих двух:
enter image description here

Я уже пытался удалить сгенерированные Room Daos и аннулировать кэш Studio (например, здесь ), но он все тот же.

Есть идеи?

Кстати: если я соблюдаю и изменяю два поля на notNull в файле SQLite, он просто переходит на следующую таблицу и помечает случайные поля как 'ожидаемые не notNull'.

...