旧版 Android 版本上的 Expo-sqlite 语法错误,导致 UPSERTS 的格式正确错误

问题描述 投票:0回答:1

适用于旧版本的 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

react-native sqlite expo android-sqlite typeorm
1个回答
0
投票

来自 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
....
© www.soinside.com 2019 - 2024. All rights reserved.