Is it possible to generate CREATE TABLE SQL statements from an entity class for solve invalid schema error easily?

Viewed 22

I am working with a table with many columns in Android Room.

I have created the table in SQLite and the corresponding entity class in Java. And when I compile the application I have the error:

E/AndroidRuntime: FATAL EXCEPTION: arch_disk_io_0 Process: com.my.app, PID: 8356 java.lang.RuntimeException: Exception while computing database live data. at androidx.room.RoomTrackingLiveData$1.run(RoomTrackingLiveData.java:92) at androidx.room.TransactionExecutor$1.run(TransactionExecutor.java:47) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:920) Caused by: java.lang.IllegalStateException: Pre-packaged database has an invalid schema: today(com.my.app.data.entity.TodayEntity). Expected: E/AndroidRuntime: TableInfo{name='today', columns={liturgyFK=Column{name='liturgyFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, timeID=Column{name='timeID', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, tPrayerFK=Column{name='tPrayerFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, tHymnFK=Column{name='tHymnFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, saintFK=Column{name='saintFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, oHymnFK=Column{name='oHymnFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, nPsalmodyFK=Column{name='nPsalmodyFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, vPrayerFK=Column{name='vPrayerFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, nBiblicalFK=Column{name='nBiblicalFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, massReadingFK=Column{name='massReadingFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, nPrayerFK=Column{name='nPrayerFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, sPsalmodyFK=Column{name='sPsalmodyFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, oPrayerFK=Column{name='oPrayerFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, vMagnificatFK=Column{name='vMagnificatFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, vHymnFK=Column{name='vHymnFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, lBenedictusFK=Column{name='lBenedictusFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, lHymnFK=Column{name='lHymnFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, invitatoryFK=Column{name='invitatoryFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, lPrayerFK=Column{name='lPrayerFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, vPsalmodyFK=Column{name='vPsalmodyFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, oVerseFK=Column{name='oVerseFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, lPsalmodyFK=Column{name='lPsalmodyFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, oPsalmodyFK=Column{name='oPsalmodyFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, oTeDeum=Column{name='oTeDeum', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='0'}, nHymnFK=Column{name='nHymnFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, oBiblicalFK=Column{name='oBiblicalFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, vIntercessionsFK=Column{name='vIntercessionsFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, lIntercessionsFK=Column{name='lIntercessionsFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, todayDate=Column{name='todayDate', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=1, defaultValue='null'}, previousFK=Column{name='previousFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='1'}, tBiblicalFK=Column{name='tBiblicalFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, tPsalmodyFK=Column{name='tPsalmodyFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null' E/AndroidRuntime: }, sHymnFK=Column{name='sHymnFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, sBiblicalFK=Column{name='sBiblicalFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, oPatristicFK=Column{name='oPatristicFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, weekDayFK=Column{name='weekDayFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, lBiblicalFK=Column{name='lBiblicalFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, vBiblicalFK=Column{name='vBiblicalFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, sPrayerFK=Column{name='sPrayerFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}}, foreignKeys=[ForeignKey{referenceTable='lh_hymn_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[sHymnFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_psalmody_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[nPsalmodyFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_hymn_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[tHymnFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_office_verse_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[oVerseFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_hymn_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[vHymnFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_hymn_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[oHymnFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_reading_short_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[tBiblicalFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_prayer', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[nPrayerFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_reading_short_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[nBiblicalFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_prayer', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[sPrayerFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_prayer', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[vPrayerFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_psalmody_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[oPsalmodyFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_office_patristic_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[oPatristicFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_psalmody_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[tPsalmodyFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='saint', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[saintFK], referenceColumnNames=[saintID]}, ForeignKey{referenceTable='mass_reading_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[massReadingFK], referenceColumnNames=[liturgyFK]}, ForeignKey{referenceTable='lh_psalmody_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[lPsalmodyFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='liturgy', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[previousFK], referenceColumnNames=[liturgyID]}, ForeignKey{referenceTable='lh_reading_short_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[lBiblicalFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_gospel_canticle', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[lBenedictusFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_reading_short_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[vBiblicalFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_prayer', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[oPrayerFK], r E/AndroidRuntime: eferenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_psalmody_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[sPsalmodyFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_invitatory_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[invitatoryFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_intercessions_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[lIntercessionsFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_psalmody_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[vPsalmodyFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_hymn_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[lHymnFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_hymn_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[nHymnFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_gospel_canticle', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[vMagnificatFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_intercessions_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[vIntercessionsFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='liturgy', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[liturgyFK], referenceColumnNames=[liturgyID]}, ForeignKey{referenceTable='lh_office_biblical_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[oBiblicalFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_prayer', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[tPrayerFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_reading_short_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[sBiblicalFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_prayer', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[lPrayerFK], referenceColumnNames=[groupID]}], indices=[]} Found: E/AndroidRuntime: TableInfo{name='today', columns={liturgyFK=Column{name='liturgyFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, timeID=Column{name='timeID', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, tPrayerFK=Column{name='tPrayerFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, tHymnFK=Column{name='tHymnFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, saintFK=Column{name='saintFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, oHymnFK=Column{name='oHymnFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, nPsalmodyFK=Column{name='nPsalmodyFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, vPrayerFK=Column{name='vPrayerFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, nBiblicalFK=Column{name='nBiblicalFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, massReadingFK=Column{name='massReadingFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, nPrayerFK=Column{name='nPrayerFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, sPsalmodyFK=Column{name='sPsalmodyFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, oPrayerFK=Column{name='oPrayerFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, vMagnificatFK=Column{name='vMagnificatFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, vHymnFK=Column{name='vHymnFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, lBenedictusFK=Column{name='lBenedictusFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, lHymnFK=Column{name='lHymnFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, invitatoryFK=Column{name='invitatoryFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, lPrayerFK=Column{name='lPrayerFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, vPsalmodyFK=Column{name='vPsalmodyFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, oVerseFK=Column{name='oVerseFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, lPsalmodyFK=Column{name='lPsalmodyFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, oPsalmodyFK=Column{name='oPsalmodyFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, oTeDeum=Column{name='oTeDeum', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='0'}, nHymnFK=Column{name='nHymnFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, oBiblicalFK=Column{name='oBiblicalFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, vIntercessionsFK=Column{name='vIntercessionsFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, lIntercessionsFK=Column{name='lIntercessionsFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, todayDate=Column{name='todayDate', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=1, defaultValue='null'}, previousFK=Column{name='previousFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='1'}, tBiblicalFK=Column{name='tBiblicalFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, tPsalmodyFK=Column{name='tPsalmodyFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null' E/AndroidRuntime: }, sHymnFK=Column{name='sHymnFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, sBiblicalFK=Column{name='sBiblicalFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, oPatristicFK=Column{name='oPatristicFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, lBiblicalFK=Column{name='lBiblicalFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, vBiblicalFK=Column{name='vBiblicalFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, sPrayerFK=Column{name='sPrayerFK', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}}, foreignKeys=[ForeignKey{referenceTable='lh_hymn_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[sHymnFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_psalmody_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[nPsalmodyFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_hymn_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[tHymnFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_office_verse_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[oVerseFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_hymn_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[vHymnFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_hymn_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[oHymnFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_reading_short_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[tBiblicalFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_prayer', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[nPrayerFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_reading_short_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[nBiblicalFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_prayer', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[vPrayerFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_prayer', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[sPrayerFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_psalmody_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[oPsalmodyFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_office_patristic_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[oPatristicFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_psalmody_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[tPsalmodyFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='saint', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[saintFK], referenceColumnNames=[saintID]}, ForeignKey{referenceTable='lh_psalmody_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[lPsalmodyFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='mass_reading_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[massReadingFK], referenceColumnNames=[liturgyFK]}, ForeignKey{referenceTable='liturgy', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[previousFK], referenceColumnNames=[liturgyID]}, ForeignKey{referenceTable='lh_reading_short_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[lBiblicalFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_gospel_canticle', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[lBenedictusFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_reading_short_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[vBiblicalFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_prayer', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[oPrayerFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_psalmody_join', onDelete='CASCADE', onUpdate='CASCADE', colum E/AndroidRuntime: nNames=[sPsalmodyFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_intercessions_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[lIntercessionsFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_invitatory_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[invitatoryFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_psalmody_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[vPsalmodyFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_hymn_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[nHymnFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_hymn_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[lHymnFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_intercessions_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[vIntercessionsFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_gospel_canticle', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[vMagnificatFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='liturgy', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[liturgyFK], referenceColumnNames=[liturgyID]}, ForeignKey{referenceTable='lh_prayer', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[tPrayerFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_office_biblical_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[oBiblicalFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_reading_short_join', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[sBiblicalFK], referenceColumnNames=[groupID]}, ForeignKey{referenceTable='lh_prayer', onDelete='CASCADE', onUpdate='CASCADE', columnNames=[lPrayerFK], referenceColumnNames=[groupID]}], indices=[]} at androidx.room.RoomOpenHelper.onCreate(RoomOpenHelper.java:82)

The error message shows the differences between the expected and the found table, but in a disordered way that difficult the comparison in a big table.

My question is if there is a way to convert an entity class to a CREATE TABLE statement, so that it is easier to compare the two CREATE TABLE to find where the error is.

1 Answers

My question is if there is a way to convert an entity class to a CREATE TABLE statement, so that it is easier to compare the two CREATE TABLE to find where the error is.

Yes, Room does this on your behalf as it generates the SQL. Try the following:-

  1. Create the @Entity annotated classes.
  2. Incude the @Entity annotated classes in the entities= parameter of the @Database annotated abstract class.
  3. Compile the project.
  4. Using Android Studio's Android View locate the java (generated), find the class that is the same name as the @Database annotated class but suffixed with _Impl.
  5. Within the class locate the createAllTables method.
  6. There will be an _db.execSQL statement for every table and also for indexes. You can copy and paste the SQL from these.
    1. You do not (should not) have to create the room_master_table nor use the insert into the room_master_table.

Example

enter image description here

Rather than compare, you may wish to use the actual SQL statements to create the table(s). If you have existing tables with data then you could rename them using an ALTER TABLE the_table RENAME TO the_renamed_original_table; and then after creating table(s) using the Room SQL use an INSERT INTO the_table SELECT * FROM the_renamed_original_table.

Related