代码 = 134110 - 验证错误缺少强制目标属性上的属性值

Posted

技术标签:

【中文标题】代码 = 134110 - 验证错误缺少强制目标属性上的属性值【英文标题】:Code=134110 - Validation error missing attribute values on mandatory destination attribute 【发布时间】:2017-09-07 09:17:12 【问题描述】:

上下文:

使用 CoreData 的应用程序 过去成功执行了一些轻量级迁移(达到模型版本的第 4 次迭代) 客户想要一个新功能 创建了第 5 个模型版本 向 TestModel 实体添加了一个糟糕的新属性,一个名为 new_one 的非可选布尔值

结果:

CoreData: error: NSUnderlyingError = "Error Domain=NSCocoaErrorDomain Code=134110 \"An error occurred during persistent store migration.\" 

UserInfo=

entity= TestModel, 

attribute=new_one, 

reason=Validation error missing attribute values on mandatory destination attribute";


解决方案:

我不完全理解为什么会发生这种情况(我太累了,急于把这个问题抛在脑后),但是“强制目标属性”的事情给我指明了将属性设置为可选的方向。无论是正确的做法还是只是普通的 hack...我不知道...但它解决了我的问题,我现在可以继续下一个

【问题讨论】:

【参考方案1】:

您几乎一针见血,但听起来您可能不知道为什么。这是因为:

    该属性是必需的 这意味着保存更改时它必须有一个值 迁移会保存更改,但 您没有为此属性提供任何值。

这直接导致您收到错误。

您可以使用以下任一方法解决此问题:

像您一样使该属性成为可选的。迁移后,迁移的对象都没有值,但这没关系。 保持非可选,但在模型编辑器中提供默认值。迁移后,所有迁移的对象都具有默认值。 设置非轻量级迁移并在迁移发生时提供值。迁移后,每个迁移的对象都具有您在迁移期间提供的任何值。

【讨论】:

【参考方案2】:

我认为提供默认值比多余的可选性要好。

仅当值确实是可选时才使用可选。

【讨论】:

以上是关于代码 = 134110 - 验证错误缺少强制目标属性上的属性值的主要内容,如果未能解决你的问题,请参考以下文章

Magento2 - 使用Paypal结算协议创建自定义订单(“强制参数缺少referenceId错误”)

道具验证中缺少 React eslint 错误

查询条件缺少关键架构元素:验证错误

在编译时,我得到“错误:不同指针类型 'char*' 和 'char (*)[200]' 之间的比较缺少强制转换”在线

道具验证中缺少反应/道具类型

Maven 强制插件缺少或无效规则