Lorsque vous rencontrez ce message pour la première fois, vous travaillez très probablement avec une version non publiée de la base de données. Si c'est le cas, il est probable que vous ne devez pas incrémenter la version de la base de données . Le simple fait d'effacer les données de l'application vous fera passer l'exception.
Si vous n'incrémentez pas la base de données (recommandé) :
Vous devez effacer les données de l'application dans les paramètres d'Android. Vous pouvez également désinstaller la version précédente de l'application, puis installer la nouvelle version pour contourner l'exception. Cette dernière approche ne fonctionne pas dans certaines conditions (par exemple, lorsque l'option "Autoriser la sauvegarde" est activée).
Comme l'effacement des données de l'application fonctionne toujours, je prends cette voie à chaque fois.
Si vous incrémentez la version de la base de données :
Vous devrez écrire un code de migration de la base de données pour tenir compte des modifications apportées au schéma de la base de données. Voir aquí pour des informations sur la migration.
L'alternative à l'écriture du code de migration de la base de données est d'appeler fallbackToDestructiveMigration
sur le constructeur de la base de données Room. Ce n'est probablement pas une bonne idée. Oublier de supprimer cet appel et oublier ensuite de mettre à jour la base de données entraînera une perte de données.
// Using this fallback is almost certainly a bad idea
Database database = Room.databaseBuilder(context, Database.class, DATABASE_NAME)
.fallbackToDestructiveMigration()
.build();
Là encore, il n'est pas nécessaire d'incrémenter la version de la base de données ni de procéder à une migration destructive si le schéma de la base de données précédente n'est pas actif. dans la nature .
3 votes
Si vous ne vous préoccupez pas des données de l'application, la suppression de tout le contenu dans les paramètres de l'application peut également être utile, car elle détruit simplement la base de données entière.