Look for the code around the string 'Only allow sensible combinations" in sqlite3.c, it does not consider SQLITE_OPEN_CREATE without an accompanying SQLITE_OPEN_READWRITE to be a sensible combination. This check is in the common open function before the VFS gets involved.