1

我正在使用 ActiveAndroid,一切正常,直到我向一个模型添加了另一个 ForeignKey。

我有一个名为 Song 的模型,就像:

@Column(name = "author_id")
private String mAuthorId;

@Column(name = "created")
private long mCreated;

@Column(name = "album")
private Album mAlbum;

另一个模型作者是:

@Column(name = "author_id")
private String mAuthorId;

@Column(name = "created")
private long mCreated;

private List<Album> mAlbums;

private List<Song> mSongs;

一切正常,但后来我在作者模型中添加了一个新字段:@Column(name = "last_song") private Song mLastSong;

然后,由于我在作者的模型中添加了 FK lastSong,重新启动应用程序后出现错误:E/CursorWindow:无法分配大小为 2097152 的 CursorWindow '/data/data/package/databases/app.db'错误-12。我有大约 7500 个歌曲模型和大约 450 个作者。可能会发生什么?我的代码有问题吗?

提前致谢!

4

1 回答 1

0

您需要让 ActiveAndroid 和您的应用程序更新架构:

https://github.com/pardom/ActiveAndroid/wiki/Schema-migrations

每当您的架构更改时,您都需要通过配置或 AA_DB_VERSION 元数据来增加数据库版本号。如果添加了新类,ActiveAndroid 会自动将它们添加到数据库中。但是,如果您想更改现有表中的某些内容(例如添加或删除列),可以使用名为 .sql 的 sql 脚本完成,其中 NewVersion 是 AA_DB_VERSION,位于 assets/migrations 中。

如果文件名大于旧数据库版本且小于或等于新版本,ActiveAndroid 将执行脚本。

假设您向 Items 表添加了列颜色。您现在需要将 AA_DB_VERSION 增加到 2 并提供脚本 2.sql。

ALTER TABLE 项目添加列颜色整数;

于 2015-11-10T09:10:17.507 回答