【发布时间】:2015-10-20 14:45:45
【问题描述】:
我在第一个版本的数据库中有以下模型:
@Table(name = DBConstants.TABLE_CHATS)
public class Chat extends Model {
@Column(name = DBConstants.COLUMN_CHATS_CHAT_ID,unique = true,onUniqueConflict = Column.ConflictAction.REPLACE)
public String chatId;
@Column(name = DBConstants.COLUMN_CHATS_CHAT_MESSAGE)
public String chatMessage;
@Column(name = DBConstants.COLUMN_CHATS_SENDER_NAME)
public String chatSenderName;
@Column(name = DBConstants.COLUMN_JOBS_JOB_ID)
public String chatJobId;
public Chat(){super();}
public Chat(String chatId, String chatMessage, String chatSenderName, String chatJobId){
super();
this.chatId = chatId;
this.chatMessage = chatMessage;
this.chatSenderName =chatSenderName;
this.chatJobId = chatJobId;
}
public static List<Chat> getChats(String jobId) {
return new Select()
.from(Chat.class)
.where("jobId=?",jobId)
.execute();
}
}
现在我想用新列更新上述模型,所以我用新列更新了模型类,如下所示。
@Table(name = DBConstants.TABLE_CHATS)
public class Chat extends Model {
@Column(name = DBConstants.COLUMN_CHATS_CHAT_ID,unique = true,onUniqueConflict = Column.ConflictAction.REPLACE)
public String chatId;
@Column(name = DBConstants.COLUMN_CHATS_CHAT_MESSAGE)
public String chatMessage;
@Column(name = DBConstants.COLUMN_CHATS_SENDER_NAME)
public String chatSenderName;
@Column(name = DBConstants.COLUMN_JOBS_JOB_ID)
public String chatJobId;
@Column(name = "extra_column")
public String extraColumn;
public Chat(){super();}
public Chat(String chatId, String chatMessage, String chatSenderName, String chatJobId,String extraColumn){
super();
this.chatId = chatId;
this.chatMessage = chatMessage;
this.chatSenderName =chatSenderName;
this.chatJobId = chatJobId;
this.extraColumn = extraColumn;
}
public static List<Chat> getChats(String jobId) {
return new Select()
.from(Chat.class)
.where("jobId=?",jobId)
.execute();
}
}
我正在使用 Active android 作为数据库,所以我完成了以下步骤:
1.更新清单文件中的数据库版本号
<meta-data android:name="GC_DB_VERSION" android:value="4" />
2.assets/migrations中添加4.sql脚本文件
3.在其中添加了更新查询。
ALTER TABLE chat ADD COLUMN extra_column TEXT;
- 现在,当我尝试将新列值插入数据库时,出现以下错误:
android.database.sqlite.SQLiteException:表聊天没有列 命名为 extra_column (code 1): ,编译时:INSERT INTO 聊天(chat_message,Id,extra_column,chat_sender_name,jobId,chatId) 值 (?,?,?,?,?,?) 10-16 06:54:29.712 16791-16791/com.example.manikanta.navigationdrawerpattern E/SQLite 数据库:在 android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native 方法) 10-16 06:54:29.712 16791-16791/com.example.manikanta.navigationdrawerpattern E/SQLite 数据库:在 android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:882) 10-16 06:54:29.712 16791-16791/com.example.manikanta.navigationdrawerpattern E/SQLite 数据库:在 android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:493) 10-16 06:54:29.712 16791-16791/com.example.manikanta.navigationdrawerpattern E/SQLite 数据库:在 android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 10-16 06:54:29.712 16791-16791/com.example.manikanta.navigationdrawerpattern ………… 10-16 06:54:29.712 16791-16791/com.example.manikanta.navigationdrawerpattern E/SQLiteLog: (1) 聊天桌没有名为extra_column的列
谁能解释一下如何解决这个问题?
【问题讨论】:
-
DBConstants.TABLE_CHATS="chat"?
标签: android sqlite activeandroid