SQLite数据库错误重复的列名

时间:2019-02-21 00:37:22

标签: android sqlite tracking

Error Code : 1 (SQLITE_ERROR) Caused By : SQL(query) error or missing database.
    (duplicate column name: Floor (code 1)
while compiling: 
CREATE TABLE LocalizationInfo(_item INTEGER PRIMARY KEY, idINT,Floor TEXT, Floor HeightTEXT, Adress TEXT ,LatitudeTEXT, LongitudeTEXT, Altitude TEXT,Pressure TEXT) 

我试图保存我的数据,即地板,地板高度,GPS数据和地址,这些数据是从另一个活动中获取的,并保存到另一个实施SQLite数据以进行保存,加载,编辑和删除的活动中。 当我尝试通过单击将用户定向到数据库的列表或发布按钮将其他活动中的数据添加到数据库时,我总是收到此错误消息。

4 个答案:

答案 0 :(得分:1)

尽量不要在地板高度之间放置空间,如果可以的话,可以_。 Floor_Height TEXT

答案 1 :(得分:1)

我认为您的问题是由于在列名称“地板高度”中使用空格引起的。最好将下划线而不是空格用于列名。您可以定义列名称,例如floor,floor_height,gps_data和地址。

答案 2 :(得分:1)

您的问题是

CREATE TABLE LocalizationInfo(
    _item INTEGER PRIMARY KEY, 
    idINT,
    Floor TEXT, 
    Floor HeightTEXT, 
    Adress TEXT ,
    LatitudeTEXT, 
    LongitudeTEXT, 
    Altitude TEXT,
    Pressure TEXT
)
  1. 在Floor和Height之间有一个空格(因此,当尝试创建表格时,列名会重复)和
  2. 在高/纬度和经度与TEXT之间以及ID与INT之间没有空格。

仅更正1最终将创建列(这可能会导致问题不断出现):-

  • _item (如预期),
  • idINT (您可能希望ID为INTEGER类型),
  • 楼层(如预期)
  • FloorHeightText (您可能希望FloorFeight具有TEXT类型),
  • 地址(如预期)
  • LatitudeTEXT (您可能希望使用TEXT类型的Latitude)
  • LongitudeText (您可能希望使用经度为TEXT的文本)
  • 海拔(如预期)
  • 压力(符合预期)

尝试更改为使用:-

CREATE TABLE LocalizationInfo(
    _item INTEGER PRIMARY KEY, 
    id INT,
    Floor TEXT, 
    FloorHeight TEXT, 
    Adress TEXT ,
    Latitude TEXT, 
    Longitude TEXT, 
    Altitude TEXT,
    Pressure TEXT
)

您将需要删除/清除应用程序的数据或卸载该应用程序,然后重新运行该应用程序,因为由于数据库存在, onCreate 方法将无法运行。

答案 3 :(得分:0)

您是否可以不为表格的行/列设置值 例如:

private static final String NEWS_PUBLISHER = "news_publisher";
  private static final String NEWS_CONTENT = "news_content";
  private static final String NEWS_DATE = "news_date";

也许您为此设置了一个名字...