Я пытаюсь создать новую базу данных ODB, однако иногда xxx.db
не существует даже I new
db success. С кодом под землей, он не может поймать исключение, однако, он может ввести if(!_file)
ODB: создать db-успех, но db-файл не существует
string dbFile = getPalBundle()->getFileStorageProvider()->getDocumentsPath(userId + "/xxx.db");
auto db = std::shared_ptr<odb::sqlite::database>(new odb::sqlite::database(dbFile, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_SHAREDCACHE | SQLITE_OPEN_FULLMUTEX, false));
if(db == nullptr)
{
ret = false;
}
// check database avalible
try {
db->schema_version();
} catch (...) {
DLOG(kTagDaoFactory, "Datase file damaged, logout");
ret = false;
}
fstream _file;
_file.open(dbFile, ios::in);
if (!_file) {
ret = false;
DLOG(kTagDaoFactory, "Data base file no exist, logout");
}
Я понятия не имею, что происходит, кто-то может мне помочь? Заранее спасибо!
Вы имеете в виду, что мы можем создать пустую базу данных в памяти, которая не существует в виде файла, пока в нее не будет записано что-то? – yeyimilk
Вот что я написал. –