Hallo,
I’m using the built-in Unreal Engine SQLite plugin (FSQLiteDatabase
) to store and modify data in a SQLite database. Everything works fine on Windows – I can create tables, insert data, and read from the database. However, on an Android-based Pico VR headset (ARM64), any write operation fails. The .db
file is created (with size 0 bytes), but CREATE TABLE
and INSERT
calls both return false when executing Execute()
. Reading from an already populated database (manually copied to the device) works fine, but creating or updating rows doesn’t work at all.
bool bOpened = SQLiteDatabase->Open(*DatabasePath, ESQLiteDatabaseOpenMode::ReadWriteCreate);
if (!bOpened)
{
// Failed to open DB
return;
}
// DB file appears, but remains 0Bbool bCreateTable = SQLiteDatabase->Execute(TEXT(
“CREATE TABLE IF NOT EXISTS T1 (ID INTEGER PRIMARY KEY AUTOINCREMENT, TXT TEXT NOT NULL);”
));
if (!bCreateTable)
{
// CREATE TABLE fails on Android/Pico
}bool bInsert = SQLiteDatabase->Execute(TEXT(
“INSERT INTO T1(TXT) VALUES (‘TestData’);”
));
if (!bInsert)
{
// INSERT also fails
}
- On Windows: All commands succeed.
- On Android/Pico:
Open
returns true, but every write operation (e.g.CREATE TABLE
,INSERT
) fails. The resulting.db
file remains empty at 0 bytes.
What I have checked:
- File Path – Using
FPaths::ProjectPersistentDownloadDir()
for the database path on Android. I can successfully write plain.txt
files in the same location. - PRAGMA/Transactions – Removed all WAL/transaction statements to keep the test minimal (still fails).
- Build Settings – Only arm64 support is enabled, no armv7.
- Plugin/SQLite Version – It’s reported as SQLite 3.31.1 in the plugin.
- Read-Only DB – If I manually place a pre-filled
.db
file on the headset, I can read from it, but attempting to insert or create new tables fails as well. - No direct error logs – The plugin doesn’t expose
sqlite3_errmsg()
, so I only getExecute() == false
. On Windows, there’s no issue at all.
Any help or insight would be greatly appreciated!