2016-03-04 54 views
3

糖ORM完美的作品在Android < 5,但在Android上5>崩潰。 我使用的1.4版糖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,即時運行功能會導致SQL表創建出現問題,這會導致您遇到的異常。禁用即時運行修復 –

回答

12

禁用即時運行工作對我來說這

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

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

你的音頻表。

+0

非常感謝!你救了我很多時間 –

+0

如何禁用? – snehasish

+0

@snehasish轉到文件 - >設置 - >構建,執行,部署 - >即時運行 –

0

請在您的onCreate應用程序類實現黑客findById之類的函數將被創建

1

如果你已經跑了糖您的應用程序,然後以後你添加了一個模型,給出了「沒有這種表錯誤」,那麼你需要只更新(增加)的AndroidManifest.xml你的數據庫版本元。這在大多數情況下解決了問題,即時運行不是問題。看看問題HERE 欲瞭解更多信息。

0

消息java.lang.NoSuchTable:是指有人試圖調用構造不帶任何參數。添加一個默認的構造函數應該解決這個問題:

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

你禁用即時運行後,一定要重新運行前,卸載從手機/仿真器的應用程序。

1

我用的是1.3版本,並面臨着同樣的問題。 但我解決了使用gradle版本1.5和初始化SugarContext。

在gradle這個依賴關係:

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

在onCreate方法:

SugarContext.init(this); 
+0

禁用*即時運行*可能有所幫助。 –