Отсутствует столбец при настройке таблицы базы данных sqflite - PullRequest
0 голосов
/ 05 июля 2019

В настоящее время я занимаюсь разработкой приложения для Android с использованием флаттера. Для настройки баз данных я использую плагин sqflite.

Настройка баз данных работает следующим образом:

  Future<Database> getDbModelDevice() async {
    return openDatabase(join(await getDatabasesPath(), dbNameDevice),
        onCreate: (db, version) {
      return db.execute("""
      CREATE TABLE $tableNameDevice (
        id INTEGER PRIMARY KEY, 
        name TEXT NOT NULL, 
        ip TEXT NOT NULL
        )""");
    },
    version: 1,
    );
  }

Это работает как задумано и создает базу данных с таблицей. Я совершенно новичок в этой теме, поэтому я не знаю, сможете ли вы как-то увидеть структуру созданной таблицы. Я попытался протестировать новую таблицу, вставив в нее устройство:

Future<void> insertDevice(Device device) async {
  db.insert(
    tableNameDevice, 
    device.toMap(),
    conflictAlgorithm: ConflictAlgorithm.replace,
  );
}

Map<String, dynamic> toMap() {
  return {
    'id': id,
    'name': name,
    'ip': ip,
  };
}

При вызове функции insertDevice появляется следующее сообщение об ошибке:

[ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: DatabaseException(table deviceTable has no column named ip (code 1): , while compiling: INSERT OR REPLACE  INTO deviceTable (id, name, ip) VALUES (?, ?, ?)) sql 'INSERT OR REPLACE  INTO deviceTable (id, name, ip) VALUES (?, ?, ?)' args [0, testInsertion, 0.0.0.0]}

Другие столбцы работают, так как вставка работает при комментировании параметра ip в функциях toMap () устройство без ошибок.

Что мне здесь не хватает? Любая помощь с благодарностью.

1 Ответ

0 голосов
/ 05 июля 2019

@ Комментарий TimBiegeleisen помог мне решить проблему.Я посмотрел на свои определенные функции для удаления таблиц и обнаружил, что я сбрасывал неправильные таблицы.

Так как я исправил это, теперь он работает как задумано.

Спасибо за ваши ответы!

...