title: Caused by: android.database.sqlite.SQLiteException: no such table: (code 1) Android
body: <p>We have a sqlite database in our Application. Its working fine for all the users but few of them experiencing the <code>Caused by: android.database.sqlite.SQLiteException: no such table: generalSettings (code 1): , while compiling: select * from generalSettings</code> error. </p>
  
  <p>Below is my sqlite helper class to create the db and the error log. In <code>assert/Master.db</code> we have the table  <code>generalSettings</code>. But after copying it to the device the table is missing. This is happening only for few users. I searched for the solution but I cant find the exact one. Team please help me to fix this.</p>
  
  <p>Code:</p>
  
  <pre><code>import java.io.FileOutputStream;
  import java.io.InputStream;
  import java.io.OutputStream;
  import java.io.PrintWriter;
  import java.io.StringWriter;
  
  import android.content.Context;
  import android.content.Intent;
  import android.database.sqlite.SQLiteDatabase;
  import android.database.sqlite.SQLiteOpenHelper;
  import android.net.Uri;
  import android.util.Log;
  
  public class InstallDB extends SQLiteOpenHelper {
      Context ctx;
  
      String DBNAME;
      String DBPATH;
      Modules modObj = new Modules();
  
      public InstallDB(Context context, String name) {
          super(context, name, null, 1);
          this.ctx = context;
          this.DBNAME = name;
  
          this.DBPATH = this.ctx.getDatabasePath(DBNAME).getAbsolutePath();
          Log.e("Path 1", DBPATH);
  
      }
  
      public void createDataBase() {
  
          boolean dbExist = checkDataBase();
  
          SQLiteDatabase db_Read = null;
  
          if (!dbExist) {
              synchronized (this) {
  
                  db_Read = this.getReadableDatabase();
                  Log.e("Path 2", this.getReadableDatabase().getPath());
                  db_Read.close();
  
                  copyDataBase();
                  Log.v("copyDataBase---", "Successfully");
              }
  
              // try {
  
              // } catch (IOException e) {
              // throw new Error("Error copying database");
              // }
          }
      }
  
      private boolean checkDataBase() {
  
          SQLiteDatabase checkDB = null;
  
          try {
              String myPath = DBPATH;
              checkDB = SQLiteDatabase.openDatabase(myPath, null,
                      SQLiteDatabase.OPEN_READWRITE);
          } catch (Exception e) {
              Log.i("SQLite Error", "database does't exist yet.");
          }
  
          if (checkDB != null) {
              checkDB.close();
          }
  
          return checkDB != null ? true : false;
      }
  
      private void copyDataBase() {
  
          try {
              InputStream myInput = ctx.getAssets().open(DBNAME);
              String outFileName = DBPATH;
  
              OutputStream myOutput = new FileOutputStream(outFileName);
  
              byte[] buffer = new byte[1024 * 3];
  
              int length = 0;
  
              while ((length = myInput.read(buffer)) &gt; 0) {
                  myOutput.write(buffer, 0, length);
              }
  
              myOutput.flush();
              myOutput.close();
              myInput.close();
          } catch (Exception e) {
              Modules.stacTaceElement = e.getStackTrace();
  
              StringWriter stackTrace1 = new StringWriter();
              e.printStackTrace(new PrintWriter(stackTrace1));
              System.err.println(stackTrace1);
  
              Intent send = new Intent(Intent.ACTION_SENDTO);
              String uriText;
  
              uriText = "mailto:test@test.com"
                      + "&amp;subject=Error Report"
                      + "&amp;body="
                      + stackTrace1.toString();
  
              uriText = uriText.replace(" ", "%20");
              Uri uri = Uri.parse(uriText);
  
              send.setData(uri);
              ctx.startActivity(Intent.createChooser(send, "Send mail..."));
              // TODO: handle exception
          }
  
      }
  
      @Override
      public void onCreate(SQLiteDatabase db) {
  
      }
  
      @Override
      public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  
      }
  }
  </code></pre>
  
  <p>Error Log:</p>
  
  <pre><code>java.lang.RuntimeException: Unable to start activity ComponentInfo{palmagent.FidelityAgent.Two/palmagent.FidelityAgent.Two.PassNew}: android.database.sqlite.SQLiteException: no such table: generalSettings (code 1): , while compiling: select * from generalSettings
  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2209)
  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2269)
  at android.app.ActivityThread.access$800(ActivityThread.java:139)
  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210)
  at android.os.Handler.dispatchMessage(Handler.java:102)
  at android.os.Looper.loop(Looper.java:136)
  at android.app.ActivityThread.main(ActivityThread.java:5102)
  at java.lang.reflect.Method.invokeNative(Native Method)
  at java.lang.reflect.Method.invoke(Method.java:515)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
  at dalvik.system.NativeStart.main(Native Method)
  Caused by: android.database.sqlite.SQLiteException: no such table: generalSettings (code 1): , while compiling: select * from generalSettings
  at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
  at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
  at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
  at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
  at android.database.sqlite.SQLiteProgram.&lt;init&gt;(SQLiteProgram.java:58)
  at android.database.sqlite.SQLiteQuery.&lt;init&gt;(SQLiteQuery.java:37)
  at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
  at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1314)
  at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1253)
  at palmagent.FidelityAgent.Two.masterDatabase.selectquery(masterDatabase.java:59)
  at palmagent.FidelityAgent.Two.Modules.checkDatabase(Modules.java:28825)
  at palmagent.FidelityAgent.Two.PassNew$LoaduserDetails.onPreExecute(PassNew.java:140)
  at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:587)
  at android.os.AsyncTask.execute(AsyncTask.java:535)
  at palmagent.FidelityAgent.Two.PassNew.onCreate(PassNew.java:120)
  at android.app.Activity.performCreate(Activity.java:5248)
  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110)
  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2173)
  ... 11 more
  </code></pre>