primaryKeyPosition导致android room数据库架构无效错误

primaryKeyPosition导致android room数据库架构无效错误,android,sqlite,android-room,Android,Sqlite,Android Room,我有一个简单的数据库,几乎没有表。我为表实现了房间实体。我得到了这个错误,它说我的模式无效。但我发现它非常相似,唯一的区别是列顺序和primaryKeyPosition 错误消息(我省略了外键,因为它们相等) 我附上了一张图片来澄清这一区别 正如你所看到的,只有不同之处是 *表1和表2的列顺序不同 *primaryKeyPosition在最后一列中不同 我的实体类 @Entity(tableName = "am", foreignKeys = {

我有一个简单的数据库,几乎没有表。我为表实现了房间实体。我得到了这个错误,它说我的模式无效。但我发现它非常相似,唯一的区别是列顺序和primaryKeyPosition

错误消息(我省略了外键,因为它们相等)

我附上了一张图片来澄清这一区别

正如你所看到的,只有不同之处是 *表1和表2的列顺序不同 *primaryKeyPosition在最后一列中不同

我的实体类

@Entity(tableName = "am",
        foreignKeys = {
                @ForeignKey(entity = ATypes.class,
                        parentColumns = "a_id",
                        childColumns = "a_id"),
        },
        indices = {@Index("a_id")}
)
public class Am {

    public String name;
    public String symbol;
    @PrimaryKey
    @ColumnInfo(name = "a_number")
    public int aNumber;

    @NonNull
    @ColumnInfo(name = "a_id")
    public Integer aId;

}

我的问题是如何更改列顺序或primaryKeyPosition以匹配预期的架构。

如果您使用的是Robolectric,则问题可能是由此问题引起的


我也遇到了同样的问题,我用

解决了它。如果您使用的是Robolectric,则问题可能是由此问题引起的


我也遇到了同样的问题,我用

解决了。您缺少主键的索引

您缺少主键的索引

你能用你的实体类更新你的问题吗?@HenriqueVasconcellos用实体类更新了我注意到的是你没有索引你的主键,你试过了吗?你们还有其他房间关系吗?如果您需要比较,我可以提供一个工作示例。@HenriqueVasconcellos我现在有两个表。在添加第二个表和关系之前,它工作正常。我将尝试添加索引,这很可能就是问题所在!!如果它不起作用,发布您的关系配置以及您的父实体!你能用你的实体类更新你的问题吗?@HenriqueVasconcellos用实体类更新了我注意到的是你没有索引你的主键,你试过了吗?你们还有其他房间关系吗?如果您需要比较,我可以提供一个工作示例。@HenriqueVasconcellos我现在有两个表。在添加第二个表和关系之前,它工作正常。我将尝试添加索引,这很可能就是问题所在!!如果它不起作用,发布您的关系配置以及您的父实体!我正在使用sqlite和DB Browser(sqlite)进行编辑,因为您的问题没有得到回答,但从屏幕上看,我认为您正在进行测试。如果你正在使用Robolectric,那么这个库将用于测试。我正在使用sqlite和DB Browser(sqlite)来编辑你的问题,但是从屏幕上看,我认为你在做测试。如果您使用的是robolectric,则该库将用于测试
@Entity(tableName = "am",
        foreignKeys = {
                @ForeignKey(entity = ATypes.class,
                        parentColumns = "a_id",
                        childColumns = "a_id"),
        },
        indices = {@Index("a_id")}
)
public class Am {

    public String name;
    public String symbol;
    @PrimaryKey
    @ColumnInfo(name = "a_number")
    public int aNumber;

    @NonNull
    @ColumnInfo(name = "a_id")
    public Integer aId;

}