如何使用空间从没有主键的表中迁移?

liu*_*ong 6 database sqlite android android-room

我正在尝试迁移到房间,但我的表的架构是这样的:

CREATE TABLE cache(key text, content text, time integer);
Run Code Online (Sandbox Code Playgroud)

实体:

@Entity(tableName = "cache")
public class Cache{
    public Integer id;
    public String key;
    public String content;
    public Integer time;
}
Run Code Online (Sandbox Code Playgroud)

没有主键被声明为显式,构建时会发生错误:

An entity must have at least 1 field annotated with @PrimaryKey

我试图将主键添加到表中,但似乎sqlite不支持,任何人都可以帮助我?

Dav*_*ers 3

摘自此处: http: //www.sqlitetutorial.net/sqlite-primary-key/

与其他数据库系统(例如 MySQL、PostgreSQL 等)不同,您不能使用 ALTER TABLE 语句向现有表添加主键。

要解决此问题,您需要:

  • 设置外键检查关闭
  • 将表重命名为另一个表名(old_table)
  • 创建一个新表(表),其结构与您已重命名的表完全相同
  • 将数据从old_table复制到表中
  • 打开外键检查