【发布时间】:2022-06-15 21:52:33
【问题描述】:
我在 KMM 项目中使用 SqlDelight。我在使用INSERT ON CONFLICT DO UPDATE 命令时遇到问题。
经过一番调查,我发现我需要将我的方言版本的 SqlDelight 更新到 3.25,我这样做了,它工作正常,但它仍然在 Api 29 及更低版本上崩溃。
我在像素 4 Api 29 模拟器和物理设备像素 3 Api 28 上对其进行了测试,两者均崩溃。
在 Pixel 2 Api 30 及更高版本的模拟器上运行良好。
SqlDelight 版本:1.5.3
方言 = "sqlite:3.25"
我的插入语句如下所示
insertLocalPortfolioItem:
INSERT INTO localPortfolioList(name, symbol, pricePerShare, currency, cost, noOfShares, logo, availableFunds, orderAction)
VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?) ON CONFLICT(symbol) DO UPDATE SET noOfShares=excluded.noOfShares;
堆栈跟踪:
android.database.sqlite.SQLiteException: near "ON": syntax error (code 1 SQLITE_ERROR): , while compiling: INSERT INTO localPortfolioList(name, symbol, pricePerShare, currency, cost, noOfShares, logo, availableFunds, orderAction)
VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?) ON CONFLICT(symbol) DO UPDATE SET noOfShares=excluded.noOfShares
有什么想法吗?
【问题讨论】:
-
您有更多机会在kotlin slack,#squarelibraries 频道中获得答案,但对我来说,这看起来像是一个错误,应该是reported。还要检查您是否可以使用最新的 alpha 2.0.0-alpha02 重现它,因为它可能已经在那里修复了
标签: android sql kotlin kmm sqldelight