Sqlite Никаких проблем с столбцами при переходе с версии 3 на 4

#java #android #sqlite #kotlin #android-room

Вопрос:

Пользователи сталкиваются с проблемами при переходе с версии 3 на 4 в базе данных Android Sqlite, и эта проблема не может быть воспроизведена на стороне разработки, она просто публикуется в сбоях Firebase. В версии 4 мы добавили базу данных комнат, а до этого использовали базу данных SQLiteDatabase. В некоторых таблицах были типы данных, которые не поддерживались в комнате. Поэтому переименовал существующую таблицу и скопировал значения в новую таблицу с тем же именем, что и версия 3.

Пожалуйста, найдите исключение ниже:

Вызвано android.database.sqlite.Исключение SQLiteException

 Fatal Exception: f.a.x.d: The exception was not handled due to missing onError handler in the subscribe() method call. Further reading: https://github.com/ReactiveX/RxJava/wiki/Error-Handling  | android.database.sqlite.SQLiteException: no such column: column15 (code 1): , while compiling: INSERT INTO table_name (
_id,
column1 ,
column2 ,
column3 ,
column4 ,
column5 ,
column6 ,
column7 ,
column8 ,
column9 ,
column10 ,
column11 ,
column12 ,
column13 ,
column14 ,
<truncated: 9039 chars>
at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:704)
at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:701)
at io.reactivex.internal.subscribers.LambdaSubscriber.onError(LambdaSubscriber.java:79)
at io.reactivex.internal.operators.flowable.FlowableSubscribeOn$SubscribeOnSubscriber.onError(FlowableSubscribeOn.java:102)
at io.reactivex.internal.operators.flowable.FlowableToList$ToListSubscriber.onError(FlowableToList.java:79)
at io.reactivex.internal.subscribers.BasicFuseableSubscriber.onError(BasicFuseableSubscriber.java:101)
at io.reactivex.internal.subscriptions.EmptySubscription.error(EmptySubscription.java:55)
at io.reactivex.internal.operators.flowable.FlowableGenerate.subscribeActual(FlowableGenerate.java:48)
at io.reactivex.Flowable.subscribe(Flowable.java:14935)
at io.reactivex.internal.operators.flowable.FlowableMap.subscribeActual(FlowableMap.java:37)
at io.reactivex.Flowable.subscribe(Flowable.java:14935)
at io.reactivex.internal.operators.flowable.FlowableToList.subscribeActual(FlowableToList.java:44)
at io.reactivex.Flowable.subscribe(Flowable.java:14935)
at io.reactivex.Flowable.subscribe(Flowable.java:14882)
at io.reactivex.internal.operators.flowable.FlowableSubscribeOn$SubscribeOnSubscriber.run(FlowableSubscribeOn.java:82)
at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:272)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:762)
 

Комментарии:

1. Вашего кода недостаточно для продолжения. Вы используете React с RxJava? Это не похоже на проблему с комнатой.

2. Похоже на неправильный переход с v3 на v4

3. Привет, спасибо за ответ… Пользователь сообщил, что проблема возникает при переносе, и исключение возникает, когда он открывает приложение и указывает на перенос (3_4) в базе данных RoomDatabase. Он работает в отладочной сборке, если мы попытаемся обновить его с версии 3 до версии 4..

4. В настоящее время используется java Rx для запросов к БД, и когда мы перенесли какой-то класс в котлин, мы используем там сопрограммы..