sqlite3_open_v2 обрабатывает имя папки как имя файла в Xcode 14, что вызвало ошибку в Xcode 13

В Xcode 13 это вызовет ошибкуSQLError(code: 14, message: "unable to open database file"). Оказывается в Xcode 14 последнее имя папки (UUID().uuidString) рассматривается как имя файла, и при вызове open создается новый файл.

Что изменилось в Xcode 14? И можно ли настроитьsqlite3_open_v2так что это не удастся для пути к каталогу вместо того, чтобы неожиданно создать файл?

      let temp = URL(fileURLWithPath: NSTemporaryDirectory(), isDirectory: true)
dbURL = temp.appendingPathComponent(UUID().uuidString, isDirectory: true)
var connectionPointer: OpaquePointer?
let flags = SQLITE_OPEN_CREATE | SQLITE_OPEN_READWRITE | SQLITE_OPEN_FULLMUTEX
let code = sqlite3_open_v2(dbURL.absoluteString, &connectionPointer, flags, nil)
if code != SQLITE_OK {
   throw SQLError.lastError(in: connectionPointer!)
}

Изменить: пытался использоватьSQLITE_OPEN_URIфлаг, чтобы увидеть, позволит ли он более тщательно проверять переданный URL-адрес. Но это не помогло.

0 ответов

Другие вопросы по тегам