错误:java.lang.IllegalStateException:迁移未正确处理:insta_alerts(org.altruist.bajajexperia.models.ceInstaViewDetailSDTo)。
预期:
database.execSQL("CREATE TABLE IF NOT EXISTS insta_alerts(id INTEGER PRIMARY KEY,campaign TEXT,notificationText TEXT,header TEXT,alertMessage TEXT,priority TEXT,sentDate TEXT,smsText TEXT,customerId TEXT,isSeen INTEGER, CONSTRAINT index_insta_alerts_smsText_customerId UNIQUE(smsText, customerId) ON CONFLICT REPLACE)")
@Entity(
tableName = "insta_alerts", indices =
[Index(
value = ["smsText", "customerId"],
unique = true
)]
)
@Parcelize
data class CEInstaViewDetailsDTO(
@PrimaryKey(/*autoGenerate = true*/)
@ColumnInfo(name = "id")
@SerializedName("id")
var id: Long? = null,
@ColumnInfo(name = "campaign")
@SerializedName("campaign")
var campaign: String? = null,
@ColumnInfo(name = "notificationText")
@SerializedName("notificationText")
var notificationText: String? = null,
@ColumnInfo(name = "header")
@SerializedName("header")
var header: String? = null,
@ColumnInfo(name = "alertMessage")
@SerializedName("alertMessage")
var alertMessage: String? = null,
@ColumnInfo(name = "priority")
@SerializedName("priority")
var priority: String? = null,
@ColumnInfo(name = "sentDate")
@SerializedName("sentDate")
var sentDate: String? = null,
@ColumnInfo(name = "smsText")
@SerializedName("smsText")
var smsText: String? = null,
@ColumnInfo(name = "customerId")
@SerializedName("customerId")
var customerId: String? = null,
@ColumnInfo(name = "isSeen")
@SerializedName("isSeen")
var isSeen: Int? = null
) : Parcelable
您应该将索引创建添加到迁移中,如下所示
database.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS index_insta_alerts_smsText_customerId ON insta_alerts (smsText,customerId)")
注意 当前章节中涉及的配置一般适用于关系数据库。这里展示的扩展方法在你安装了关系数据库提供程序之后就能获得(由Microsoft.EntityFrmeworkCore.Relational 程序包共享)。 唯一约束是为模型中的替代键引入的。 惯例 按照惯例,为替代键引入的索引和约束都被命名为 AX_<实体类型名称>_<属性名称>。对于组合替代键,<属性名> 为用下划线分隔的属性名。 数据注解 不能
我有以下问题,我有一个已经存在的表,有三个字段field1,field2,field3。Field1实际上是另一个表的外键(@OneToOne)。所有字段2和字段3都可以为空,所以我不能为所有三个字段设置主键。在数据库中,field1 field2 field3有一个唯一约束。 我用JPA/Hibernate尝试了几种解决方案,但没有找到一个好的。如果不定义@Id,JPA当然无法工作。在@Embe
我正在尝试在Laravel中创建外键,但是当我使用迁移表时,出现以下错误: 我的迁移代码如下: 优先级迁移文件 用户迁移文件 任何关于我做错了什么的想法,我现在就想知道,因为我有很多表需要创建,例如用户、客户、项目、任务、状态、优先级、类型、团队。理想情况下,我希望创建使用外键保存此数据的表,即和等。 希望有人能帮助我开始。
问题是,如果整个迁移运行,那么我将用另一列替换列,并修复外键。那么,有什么方法可以忽略迁移的约束呢?
我正在创建一个简单的实体,并试图将它持久化到Oracle数据库中。这是我的天赋: 这是我的Java类,它创建了这个实体的一个实例,并使用HiberNate将其保存到数据库中: 当我运行这个程序时,我得到一个异常: 请帮助我在此代码中犯错误的地方。我正在使用 更新:这是我的Hibernate配置文件,表由Hibernate本身生成: 另外,如果可能的话,请给我推荐一个Hibernate-4.3的好资
迁移我的数据库时,会出现此错误。下面是我的代码,后面是我在尝试运行迁移时遇到的错误。 密码 错误消息 [Illumb\Database\QueryException] SQLSTATE[HY000]:一般错误:1005无法创建表(errno:150“外键约束格式不正确”)(sql:alter 表添加约束MEINS\u category\u id\u外键()参考()关于删除级联)