Я считаю, что ваша проблема в том, что в какой-то момент, когда вы запустили файл, не существовало из-за no such file or directory
(возможно, не удалось открыть ENOENT). Это происходит потому, что папка / каталог баз данных не существует, и копирование файла завершается неудачно
То есть базы данных Android хранятся в data / data / the_package_name / database / the_database_filename
Когда создается приложение, существует только каталог в data / data / the_package_name. ,Папка database отсутствует.
Если предпринята попытка открыть / получить доступ к базе данных, то будет создана папка базы данных (SDK / API делает это) и будет открыта база данных. НО это пустая строка таблицы sqlite_master
и android_metadata
и, следовательно, no such table
.
С этого момента вы продолжите получать no such table
, поскольку база данных существует и хранится на диске, но онане был скопирован.
Исправление:
a) изменить код так, чтобы внутри блока if была сделана проверка, чтобы увидеть, является ли родительский файл (базы данных )Каталог существует) и, если не использовать метод mkdirs
файла перед копированием.
b) либо удалить приложение, либо b) очистить данные приложения.
- Это необходимо для удаления бесполезной базы данных, которая препятствует копированию фактической базы данных.
c) перезапуск.
Однако, учитывая комментарии и Application.persistentDataPath возвращает / хранение / Эмуляция / 0 / Android / данные / com.mygame.cars / files / db_original.d , тогда вместо папки database это папка File , которая, вероятно, изначально не существует. Таким образом, вышеприведенное должно быть скорректировано в соответствии с папкой Files .
Другая проблема может заключаться в том, что включено autobackup , которое может восстанавливать данные приложения.
Это связано с функцией автоматического резервного копирования начиная с Android 6.0. Все данные вашего приложения автоматически копируются в вашу связанную учетную запись Google. Вы можете найти резервную копию в вашем Google Drive. По умолчанию резервные данные будут восстановлены после переустановки. Сохраненные файлы приложений Android автоматически восстанавливаются из ниоткуда даже после переустановки приложения.
Вы должны отключить автоматическое резервное копирование в соответствии со ссылкой, удалить и повторить проверку, чтобы убедиться, что файлыкаталог существует, и если он не создается с помощью mkdirs .