Пустой файл базы данных с тем же именем существует ДО того, как мы скопируем его из папки ресурсов.
android.database.sqlite.SQLiteException: нет такой таблицы:
Это сообщение об ошибке допустимо, поскольку в нашем каталоге данных существует пустая база данных с таким же именем.Хотя мы еще не скопировали его.
Как создается файл нашей базы данных?
Почему он существуетдаже если мы не вызывали и не создавали экземпляры наших помощников по базам данных?
Использование одинаковых классов SQLiteHelper для всех предыдущих версий без проблем.Запуск на Android 9 Pie вызывает это сообщение об ошибке после чистой установки нашего приложения для Android, которое использует существующую базу данных в каталоге ресурсов.Обычно, когда этот файл НЕ существует в каталоге данных, он копируется, а затем открывается.
Проверен и перепроверен, файл существует ДО нашего вызова, чтобы переместить его из нашего каталога ресурсов.
При проверке каталога данных Android 9 Pie наш файл базы данных SQLite уже существует.Это после новой установки И очистки кеша и данных
Чтобы повторить то, что мы видим.
- Настройки ... Приложения и уведомления
- Выберите наше приложение
- Хранилище
- Очистить кэш + Очистить хранилище
Удалить приложение.
Активность запуска "SplashActivity" onCreate ()
String mName = "myawesomedatabase.db";
String mDatabasePath = this.getApplicationInfo().dataDir + "/databases";
File file = new File (mDatabasePath + "/" + mName);
Log.i("DATABASE", "##### SplashActivity.getData() " + mDatabasePath + "/" + mName);
if (file.exists()) {
Log.i("DATABASE", "##### SplashActivity.getData() FILE EXISTS!!!");
}
Повторяя вышеизложенное и НЕ удаляя приложение, копируйте файл правильно.Это ТОЛЬКО на новых установках.
Мы подтвердили, что не жестко программируем каталог данных.Изучив это, мы узнали, что каталог базы данных изменился.
С: /data/data/com.___._____/databases/
С: /data/user/0/com.____.____ / database /
Ссылка на эту статью, которая помогла этому открытию. Android P - «SQLite: Нет такой ошибки таблицы» после копирования базы данных из ресурсов
Обход:
Чистая установка приложения.
Ожидание сбоя
Настройки ... Приложения ... Определенное приложение ... Очистить кэш + Очистить хранилище
Запустите приложение снова
Успешно, база данных НЕ существует в каталоге данных, затем приложение скопирует файл из каталога активов без проблем.