2016-03-04 5 views
3

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

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

Ошибка: 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" /> 
+0

вы нашли решение? Я использовал сахар в течение некоторого времени, и он только начал давать эту ошибку, все кажется прекрасным, все конфигурации правильные, каждый сахарный класс имеет стандартный конструктор по умолчанию –

+0

Я пишу свой собственный класс без сахара orm –

+1

, если вы недавно обновили до Android Studio 2.0, то функция Instant Run вызывает проблемы с созданием таблицы SQL, которая приведет к исключению, которое у вас есть. Отключить мгновенный запуск, чтобы исправить –

ответ

12

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

+0

Большое спасибо !!! Вы спасли меня много времени –

+0

как отключить? – snehasish

+0

@snehasish go to File -> Settings -> Build, Execution, Deployment -> Instant Run –

0

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

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

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

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

1

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

0

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

public class User 
{ 
    public User() { 
    } 
    .. 
} 
0

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

1

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

В Gradle зависимостей:

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

В методе OnCreate:

SugarContext.init(this); 
+0

Отключение * мгновенного запуска * может помочь. –

Смежные вопросы