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-адрес. Но это не помогло.