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:
Openreturns true, but every write operation (e.g.CREATE TABLE,INSERT) fails. The resulting.dbfile 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.txtfiles 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
.dbfile 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!