感谢您的阅读和帮助:)
我正在使用 ActiveAndroid 3.0 - Android 2.2 - 在我的应用程序中,我有一个名为“用户”的模型。最初,我只使用(id、名称、密码)列/属性创建模型,我在模拟器上运行该应用程序,并且它有效。
@Table(name = "user")
public class User extends Model {
@Column (name = "name")
public String name;
@Column (name = "pass_code")
public String passCode;
}
然后我添加了一个新的列/属性 - profileImage。我在模拟器上运行该应用程序,并收到 SQLite 列 profileImage 不存在错误。
@Table(name = "user")
public class User extends Model {
@Column (name = "name")
public String name;
@Column (name = "pass_code")
public String passCode;
@Column (name = "profile_image")
public String profileImage;
}
我尝试更改 ActiveAndroid 数据库名称并更新清单文件中的数据库版本属性。
<meta-data android:name="AA_DB_NAME" android:value="my_app.db" />
<meta-data android:name="AA_DB_VERSION" android:value="2" />
但我不断收到列不存在错误。
ERROR AndroidRuntime Caused by: android.database.sqlite.SQLiteException:
no such column: profile_image: , while compiling: SELECT * FROM user WHERE profile_image = ?
我也尝试过从模拟器卸载应用程序,重新启动模拟器,调用 ActiveAndroid.cacheClear()。到目前为止,这些都不起作用。
我真的很感谢任何帮助。谢谢。
从它的声音来看,您缺少升级脚本来迁移您的user
表到新架构。升级脚本基本上包含有关如何从数据库的旧状态到新状态的说明。在您的具体情况下,您需要告诉 SQLite 它应该添加一个新列,profile_image
,到现有的用户表。
要将数据库从模式 1 升级到模式 2,请升级AA_DB_VERSION
价值2
并为升级脚本指定名称2.sql
。将文件保存在assets/migrations
并为其提供以下内容:
ALTER TABLE user ADD profile_image TEXT;
这些脚本可以包含任何一组可由 SQL 语句执行的 SQL 语句。SQLiteDatabase
通过execSQL(...) http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#execSQL%28java.lang.String%29.
有关使用 Active Android 进行架构迁移的更多详细信息,请参阅GitHub 项目页面上的 wiki https://github.com/pardom/ActiveAndroid/wiki/Schema-migrations.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)