sql >> Database teknologi >  >> RDS >> SQLite

Datatype uoverensstemmelse (kode 20) under indsættelse

Jeg tror, ​​at dit problem er med kolonnerækkefølgen og vigtigst af alt begrænsningen af, at et alias for den rowide kolonne, i dit tilfælde Id kolonne (Id INTEGER PRIMARY KEY AUTOINCREMENT definerer Id som et alias for kolonnen rowid ).

  • Bemærk, at andre kolonner kan gemme enhver værdi i henhold til:-
    • Enhver kolonne i en SQLite version 3-database, undtagen en INTEGER PRIMARYKEY-kolonne, kan bruges til at gemme en værdi af enhver lagerklasse.

    • Datatyper i SQLite version 3

En sådan kolonne kan kun gemme en heltalsværdi. String sql = "INSERT INTO PHOTO VALUES(NULL,?,?,?,?)"; svarer til at indsætte værdier som pr. :-

  • NULL i navnet kolonne
  • navn, som overført, til lat kolonne
  • lat, som passeret, ind i lon kolonne
  • lon, som den er gået ind i billedet kolonne
  • billede, som overført, til Id-kolonnen (farvel[] kan ikke gemmes i Id-kolonnen)

Du kan løse dette ved enten at angive kolonnenavnene eller ved at omarrangere kolonnerne, så de matcher den rækkefølge, de blev defineret i (det første er uden tvivl den bedste praksis).

Som sådan burde et af følgende løse problemet :-

String sql = "INSERT INTO PHOTO (Id, name, lat, lon, image) VALUES(NULL,?,?,?,?)";

eller :-

String sql = "INSERT INTO PHOTO VALUES(?,?,?,?,NULL)";



  1. Sådan aktiveres alle CHECK &fremmednøglebegrænsninger i en database i SQL Server (T-SQL-eksempler)

  2. MAX() Funktion i PostgreSQL

  3. #1055 - Udtryk af SELECT-listen er ikke i GROUP BY-klausul og indeholder ikke-aggregeret kolonne, dette er inkompatibelt med sql_mode=only_full_group_by

  4. Room Migration Alter Tabel tilføjer ikke ny kolonne og migrerer bliver kaldt igen og igen