适用于旧版本的 Android < 10, upserts do not seem to be working. I am trying to run a simple upsert and constantly getting this syntax error when it gets converted into SQL:
near "ON": syntax error (code 1 SQLITE_ERROR): , while compiling: INSERT INTO dummy_table (name_id, date, dummy_value) VALUES ('abc123', 1717200000, 1212) ON CONFLICT (name_id, date) DO UPDATE SET dummy_value = excluded.dummy_value;
该查询适用于 iOS 和较新版本的 Android。也许使用 ON CONFLICT 语法的更新插入与此类版本不兼容?如果是这样,是否有解决方法?
我几乎面临着这个人在这个帖子中所面临的确切问题:https://github.com/expo/expo/issues/16776
来自 https://www.sqlite.org/lang_upsert.html
SQLite 版本 3.24.0 (2018-06-04) 添加了 UPSERT 语法
Android R(版本 11 API 30)是最早支持 UPSERT(SQLite 版本 3.28.0)的,之前的 Android 版本官方版本为 3.22.0 或更低。
按照:-
https://developer.android.com/reference/android/database/sqlite/package-summary.html
其中包括:-
Android API SQLite Version
LATEST 3.42.0
API 34 3.39
API 33 3.32
API 32 3.32
API 31 3.32
API 30 3.28
API 28 3.22
API 27 3.19
....