Я создаю базу данных, используя Moor для моего приложения флаттера. Он имеет 5 таблиц и соответствующие DAO (объекты доступа к данным).
@UseMoor(
tables: [Cart, CartTotal, Books, Subjects, Images],
daos: [CartDao, CartTotalDao, BooksDao, SubjectsDao, SearchDao, ImagesDao])
class AppDatabase extends _$AppDatabase {
AppDatabase()
: super(FlutterQueryExecutor.inDatabaseFolder(
path: 'db.sqlite', logStatements: true));
@override
int get schemaVersion => 1;
}
Когда я запускаю приложение на эмуляторе, все работает нормально. Все таблицы созданы правильно. Ошибка возникает, когда я запускаю приложение на реальном устройстве. 3 таблицы созданы отлично и заполнены данными из облака, как и ожидалось. Другие 2 таблицы для корзины и итога не создаются и выдают ошибку нет такой таблицы при доступе к странице корзины.
I/flutter ( 5321): Moor: Sent SELECT * FROM cart WHERE name != ? with args [Total]
E/SQLiteLog( 5321): (1) no such table: cart
Также не ведется регистрация в моей службе обновлений базы данных, которая работает взапуск приложения показан. После того как я очистил данные приложения из раздела информации о приложении на моем устройстве и снова запустил приложение, все снова работает нормально.
I/flutter ( 5717): Moor: Sent CREATE TABLE IF NOT EXISTS books (amazon_link VARCHAR NULL, author VARCHAR NOT NULL, cost INTEGER NOT NULL, cover_url VARCHAR NULL, description VARCHAR NULL, discounted_cost INTEGER NULL, flipkart_link VARCHAR NULL, isbn INTEGER NOT NULL, language VARCHAR NULL, name VARCHAR NOT NULL, pages INTEGER NULL, publication_number INTEGER NOT NULL, publication_status VARCHAR NOT NULL, youtube_link VARCHAR NULL, PRIMARY KEY (publication_number)); with args []
I/flutter ( 5717): Moor: Sent CREATE TABLE IF NOT EXISTS subjects (publication_number INTEGER NOT NULL, sub_name VARCHAR NOT NULL, PRIMARY KEY (publication_number, sub_name)); with args []
I/flutter ( 5717): Moor: Sent CREATE TABLE IF NOT EXISTS images (url VARCHAR NOT NULL, publication_number INTEGER NOT NULL); with args []
I/flutter ( 5717): Moor: Sent CREATE TABLE IF NOT EXISTS cart (name VARCHAR NOT NULL, quantity INTEGER NOT NULL, cost INTEGER NOT NULL, discounted_cost INTEGER NOT NULL, PRIMARY KEY (name)); with args []
I/flutter ( 5717): Moor: Sent CREATE TABLE IF NOT EXISTS cart_total (name VARCHAR NOT NULL, quantity INTEGER NOT NULL, cost INTEGER NOT NULL, discounted_cost INTEGER NOT NULL, PRIMARY KEY (name)); with args []
Открытие страницы корзины работает, как и ожидалось.
I/flutter ( 5717): Moor: Sent SELECT * FROM cart WHERE name != ? with args [Total]
I/flutter ( 5717): Moor: Sent SELECT * FROM cart_total WHERE name = ?; with args [Total]
Я что-то здесь упускаю? Я также искал, есть ли какие-либо ограничения для создания таблиц, но не мог найти какие-либо. Поскольку moor работает, генерируя код с помощью build_runner, я также попытался очистить старую сборку и заново собрать ее.
Поскольку приложение работает нормально на эмуляторе и на устройстве после очистки данных, я предполагаю, что мой код правильный. В чем может быть проблема?