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() {
}
..
}