Closed sancho0410 closed 1 year ago
Hi @sancho0410,
If I understand correctly, you have first created a database WITHOUT the DatabaseView
.
Now you've added a DatabaseView
but it doesn't appear and you wonder if you need a migration for it to become available?
But i can't see the new view on my database schema, even if i delete install app on emulator and reinstall it.
This almost sounds like the Database is somehow preserved. Which could possibly be, I've seen it before. Have you tried clearing the app's data?
Need i use 'migration' for add the new databaseView and set 1 to 2 on my database version like this : @Database(version: 1, views[...]) --> @Database(version: 2,views:[...]) ?
If you have users already on the first version of the database (version 1) and you want to add a DatabaseView, then YES, you need a migration.
DISCLAIMER: I'm pretty new to the package, but this is what worked for me:
I had to perform the following steps (assuming you've already created your DatabaseView
Class):
Bump the version of your database:
@Database(version: 1, ...) --> @Database(version: 2, ...)
Add the DatabaseView
to Database.views
:
@Database(version: 2, views: [CepParcelle], ...)
Create a migration function:
final migration1to2 = Migration(1, 2, (database) async {
await database.execute('CREATE VIEW CepParcelle AS SELECT c.*, p.code as parcelle_code From cep c INNER JOIN parcelle p ON p.id = c.parcelle_id');
});
Add the migration to the databaseBuilder:
final db = await $FloorMenuDatabase.databaseBuilder('app.db')
.addMigrations([migration1to2])
.build();
Run the build-runner again.
I hope this helps!
Thx for the reply =) In fact im not in production yet but i keep my previous instance of database, so i need to use migration if i keep my database and remove the system if i remove my previous app instance =)
Bit the migration system works fine ;-)
Glad to hear it!
I assume that answers your question. I will close the issue.
Hi,
I actually have a database on version 1. I've just add a new DatabaseView, visible on .g.dart file one the onCreate method:
await database.execute( 'CREATE VIEW IF NOT EXISTS 'CepParcelle' AS SELECT c.*, p.code as parcelle_code From cep c INNER JOIN parcelle p ON p.id = c.parcelle_id');
But i can't see the new view on my database schema, even if i delete install app on emulator and reinstall it.Need i use 'migration' for add the new databaseView and set 1 to 2 on my database version like this :
@Database(version: 1, views[...])
-->@Database(version: 2,views:[...])
?Thx a lot