我有致命的异常:java.lang.RuntimeException:计算数据库实时数据时出现异常。在崩溃报告中
为什么TableInfo中的所有内容都是空的
@Entity(tableName = "card_data")
@Keep
public class CardDataEntity {
@PrimaryKey(autoGenerate = true)
private int cardId;
private String cardName;
private String time;
private String sqlDate;
private int cardNumber;
private String fPathImg;
private String bPathImg;
private String cardType;
@Ignore
private boolean isHeader;
public CardDataEntity(String cardName, String time, String sqlDate, int cardNumber, String fPathImg, String bPathImg, String cardType) {
this.cardName = cardName;
this.time = time;
this.sqlDate = sqlDate;
this.cardNumber = cardNumber;
this.fPathImg = fPathImg;
this.bPathImg = bPathImg;
this.cardType = cardType;
this.isHeader = false;
}
// setter getter here
}
@Database(entities = {ScanDataEntity.class , ScanDataBookmarkEntity.class,
GenerateDataEntity.class, GenerateBookmarkDataEntity.class, CardDataEntity.class, CardBookmarkDataEntity.class},
version = 7, exportSchema = false)
public abstract class ScanDatabase extends RoomDatabase {
public abstract ScanDataDao scanDataDao();
// DAO classes
private static ScanDatabase dataBase;
public static ScanDatabase getInstance(Context context){
if (null== dataBase){
dataBase= buildDatabaseInstance(context);
}
return dataBase;
}
private static final Migration MIGRATION_6_7 = new Migration(6, 7) {
@Override
public void migrate(SupportSQLiteDatabase database) {
try {
database.execSQL("ALTER TABLE generate_data "
+ " ADD COLUMN generateImgPath TEXT");
}catch (Exception e){
e.printStackTrace();
}
}
};
// same migration for other versions
private static ScanDatabase buildDatabaseInstance(Context context) {
return Room.databaseBuilder(context,
ScanDatabase.class,
"scan_database")
.addMigrations(MIGRATION_6_7,MIGRATION_5_7,MIGRATION_4_7,MIGRATION_3_7,MIGRATION_2_7,MIGRATION_1_7)
// .fallbackToDestructiveMigration()
.allowMainThreadQueries().build();
}
}
谁能帮我一下,我真的不知道我做错了什么或者是不是一个bug。
使用@ColumnInfo批注指定列名,以提供与此字段关联的列数据。就像
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "cardId")
private int cardId;
.....
预期: 找到TableInfo{name='user',Columns={name=Column{name='name',Type='text',NotNull=False,PrimaryKeyPosition=0},Age=Column{name='Age',Type='integer',NotNull=True,PrimaryKeyPosition=0},ID=Column{name='id'
java.lang.IllegalStateException:迁移未正确处理data_table 应为:TableInfo{name=“data_table”,columns=url=column{name=“url”,type=“text”,notnull=false,primarykeyposition=0}..... 找到:TableInfo{name='data_table',colum
我有一个由Ormlite实现的现有数据库。我正在尝试用Ormlite生成的现有sqlite文件迁移到Room。 当我们在ormlite中为表列使用long数据类型时,它在SQLite中被转换为BIGINT。因此,创建的模式包含BIGINT类型的列,而BIGINT类型对于Room是未知的。当我尝试用Room升级应用程序时,我遇到了迁移异常。 java.lang.IllegalStateExcepti
然而,我发现手动操作很不方便。有没有办法告诉Room:我不会接触任何现有的表,所以数据是安全的。请为我创建迁移?
问题内容: 我正在使用Java开发数据库迁移工具。该工具将数据库表及其数据复制到目标数据库。但是我希望它可以在不同的数据库上工作。从mysql复制并在derby等中创建。使用JDBC,我们可以收集有关表及其列的足够信息。但是我要问的是,是否可以使用sql free在Java上重新创建表。我的意思是不同的数据库具有不同的数据类型,有时它们在sql语法上也有所不同。那么JDBC或任何其他库(可以是开放
在开发和维护一个数据库驱动的应用程序时, 数据库的结构会像代码一样不断演变。 例如,在开发应用程序的过程中,会增加一张新表且必须得加进来; 在应用程序被部署到生产环境后,需要建立一个索引来提高查询的性能等等。 因为一个数据库结构发生改变的时候源代码也经常会需要做出改变, Yii 提供了一个 数据库迁移 功能,该功能可以记录数据库的变化, 以便使数据库和源代码一起受版本控制。 如下的步骤向我们展示了