Sugar ORM Нет такого исключения таблицы

Sugar ORM отлично работает на Android <5, но на Android 5> вылетает. Я использую версию 1.4

Пожалуйста, помогите мне.

Ошибка: android.database.sqlite.SQLiteException: no such table: AUDIO (code 1): , while compiling: SELECT * FROM AUDIO

proguard-rules.pro

-keep class me.lobanov.mp3downloadsfree.models.** { *; }

Мой модельный класс:

package me.lobanov.mp3downloadsfree.models;

import com.orm.SugarRecord;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

@Getter
@Setter
@ToString
public class Audio extends SugarRecord {
    private long aud_id;
    private String aud_artist;
    private String aud_title;
    private String aud_url;
    private long aud_duration;

    public Audio() {
    }

    public Audio(long aud_id, String aud_artist, String aud_title, String aud_url, long aud_duration){
        this.aud_id = aud_id;
        this.aud_artist = aud_artist;
        this.aud_title = aud_title;
        this.aud_url = aud_url;
        this.aud_duration = aud_duration;
    }
}

Мой класс приложения:

public class App extends SugarApp {
    @Override
    public void onCreate() {
        super.onCreate();
    }
}

Мой манифест:

<meta-data android:name="DATABASE" android:value="mp3downloadsfree.db" />
        <meta-data android:name="VERSION" android:value="5" />
        <meta-data android:name="QUERY_LOG" android:value="true" />
        <meta-data android:name="DOMAIN_PACKAGE_NAME" android:value="me.lobanov.mp3downloadsfree.models" />

6 ответов

Решение

Отключение мгновенного запуска работало для меня.

Если вы уже запустили свое приложение с сахаром, а затем добавили модель, которая выдает сообщение об ошибке "нет такой таблицы", то вам нужно просто обновить (увеличить) метаданные VERSION базы данных в вашем AndroidManifest.xml. Это решает проблему большую часть времени, когда мгновенный запуск не является проблемой. Посмотрите на вопрос ЗДЕСЬ Для получения дополнительной информации.

И после того, как вы отключите мгновенный запуск, убедитесь, что вы удалили приложение из телефона / эмулятора, прежде чем запускать снова.

Я использовал версию 1.3 и столкнулся с той же проблемой. Но я решил с помощью Gradle версии 1.5 и инициализации SugarContext.

В зависимости от gradle:

 compile 'com.github.satyan:sugar:1.5' 

В методе onCreate:

 SugarContext.init(this);

Пожалуйста, реализуйте взломать функцию findById в вашем классе приложения onCreate, как это

public class App extends SugarApp {
    @Override
    public void onCreate() {
        super.onCreate();

        Audio.findById(Audio.class, (long) 1);
    }
}

Ваш аудио стол будет создан

Сообщение java.lang.NoSuchTable: означает, что кто-то пытался вызвать конструктор без каких-либо параметров. Добавление конструктора по умолчанию должно решить эту проблему:

public class User 
{
    public User() {
    }
    ..
}
Другие вопросы по тегам