-1

I'm getting an error called "no such table". This error wasn't there previously. I'm using Sugar ORM for SQLite Database. I tried re-installing the app but that doesn't work.

Messages.class

import com.orm.SugarRecord;



public class Messages extends SugarRecord {
    String senderId;
    String receiverId;
    String message;


public Messages(){

}

public Messages(String senderId, String receiverId, String message) {
    this.message = message;
    this.senderId = senderId;
    this.receiverId = receiverId;
}

public void setMessage(String message) {
    this.message = message;
}
public void setSenderId(String senderId) {
    this.senderId = senderId;
}
public void setReceiverId(String receiverId) {
    this.receiverId = receiverId;
}


public String getMessage(){
    return message;
}
public String getSenderId(){
    return senderId;
}
public String getReceiverId() {
    return receiverId;
}

}

Storing data

public void send(View view) {
    channel.sendUserMessage(sendText.getText().toString(), new BaseChannel.SendUserMessageHandler() {
        @Override
        public void onSent(UserMessage userMessage, SendBirdException e) {
            if (e != null) {
                // Error.
                Log.d("Error", "MSG not sent");
                return;
            }
            Messages messages = new Messages(sender, receiver, userMessage.getMessage());
            messages.save();
            sentText.setText(sendText.getText().toString());
        }
    });
}

logcat

  android.database.sqlite.SQLiteException: no such table: MESSAGES (code 1): , while compiling: INSERT OR REPLACE INTO MESSAGES(ID,SENDER_ID,RECEIVER_ID,MESSAGE) VALUES (?,?,?,?)                                                                  
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1093)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:670)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:59)
at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
at  android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1607)
at com.orm.SugarRecord.save(SugarRecord.java:266)
at com.orm.SugarRecord.save(SugarRecord.java:360)
at loany.gmx.com.sendbirdchat.GroupChannelActivity$2.onSent(GroupChannelActivity.java:89)
at com.sendbird.android.BaseChannel$8$1.run(BaseChannel.java:466)

Manifest file

<?xml version="1.0" encoding="utf-8"?>

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

<uses-permission android:name="com.loany.gmx.sendbirdloany.permission.C2D_MESSAGE" />
<uses-permission android:name="android.permission.READ_PROFILE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme"
    android:name="com.orm.SugarApp">

    <meta-data android:name="DATABASE" android:value="sugar_chat.db" />
    <meta-data android:name="VERSION" android:value="2" />
    <meta-data android:name="QUERY_LOG" android:value="true" />
    <meta-data android:name="DOMAIN_PACKAGE_NAME" android:value="loany.gmx.com.sendbirdchat" />

    <activity android:name=".LoginActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".ListUsersActivity" />
    <activity android:name=".GroupChannelActivity"></activity>
</application>

Jon Goodwin
  • 9,053
  • 5
  • 35
  • 54

1 Answers1

0

You need to specify SugarApp as your application class in AndroidManifest.xml. You do that by changing the android:name attribute of the application tag.

Check this: Getting started with Sugar ORM

If the issue still persists then try these,

  • Try disabling instant-run
  • Try removing these lines from your AndroidManifest file :

AndroidManifest.xml

<meta-data android:name="DATABASE" android:value="sugar_chat.db" />
<meta-data android:name="VERSION" android:value="2" />
<meta-data android:name="QUERY_LOG" android:value="true" />
<meta-data android:name="DOMAIN_PACKAGE_NAME" android:value="loany.gmx.com.sendbirdchat" />
Abhishek Jain
  • 3,562
  • 2
  • 26
  • 44