flutter 인강 보는 중 database 작업 진행 중 에러

Baek Dong Hyun·2022년 12월 24일
1
post-thumbnail

NOT NULL constraint failed


이 에러와 마주치게되었다.
근데 아마 꼭 이 에러가 아니더라도 flutter로 db 작업을 할 때 과정이 제가 진행한 과정과 비슷하다면 유사한 에러와 마주칠거같다.
우선 이 에러를 마주치게 된 이유는

계속 시뮬레이터를 끄지않고 켜두었던 상태였고, database 코드를 따라 작성 진행 중이였다. 그래서 .g.dart 파일을 생성하기 위해 해당 커맨드를 작성했다.

flutter run build_runner build

생성이 되고, 그 후 쿼리를 따라서 작성 했고, 데이터를 추가해 main.dart에서 해당 컬럼을 print로 확인해보려고 runApp이전에 코드를 작성했다.

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await initializeDateFormatting();

  final database = LocalDatabase();

  final colors = await database.getCategoryColors();

  if(colors.isEmpty){
    for(String hexCode in DEFAULT_COLORS){
      await database.createCategoryColor(
        CategoryColorsCompanion(
          hexCode: Value(hexCode),
        ),
      );
    }
  }

  print('colors: ${await database.getCategoryColors()}');

  runApp(const MyApp());
}

이 코드가 main.dart에 작성했던 코드이다.
그 후 에러가 발생했다.
이상하다고 느낀 시점은 저 colors를 db에 넣기 전에 빈 list인지 확인할 겸 print를 찍어봤을 때 저 에러가 나긴했는데 그냥 넘어갔었다. 그래서 다시 처음부터 뭐가 잘못됬는지 확인해보기위해 인강을 다시 보기시작했다.

그러면서 강사님께서 하신 말씀 중 현재 작업중인 db는 앱을 설치했을 때 앱 전용으로 사용하는 폴더를 가져오고 거기에 파일을 넣느다고 했다. 그래서 이미 앱이 깔려있고, 실행중이기 때문에 에러가 난게 아닐까 싶어서 앱을 삭제했고, 앱을 다시 깔기 전

flutter run build_runner build

해당 커맨드도 다시 친 다음, 그리고 run을 했다.
앱이 다시깔렸고 디버그 콘솔을 확인하니 에러 없이 잘 출력이 되었다.

profile
안녕하세요.

0개의 댓글