Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Microsoft dynamics 更改表时升级代码单元出错';s峰长度_Microsoft Dynamics_Navision_Dynamics Nav_Dynamics Nav 2016 - Fatal编程技术网

Microsoft dynamics 更改表时升级代码单元出错';s峰长度

Microsoft dynamics 更改表时升级代码单元出错';s峰长度,microsoft-dynamics,navision,dynamics-nav,dynamics-nav-2016,Microsoft Dynamics,Navision,Dynamics Nav,Dynamics Nav 2016,我有表A-Z。表A有ID的PK,所有其他表都有与表A的ID相关的字段 我的任务是进行代码清理,我需要将TableA的ID从长度30更改为20。我已经完成了其他表B-Z,以及升级代码单元。但是,当我尝试更改TableA时,会出现以下错误: “与以下主键相关的更改可能会导致新表中的数据丢失。无法处理更改,因为已更改表的TableSyncSetup type函数的TableUpgradeMode设置为Copy,这不会将数据复制到新表。要解决此问题,必须将TableUpgradeMode选项更改为Mov

我有表A-Z。表A有ID的PK,所有其他表都有与表A的ID相关的字段

我的任务是进行代码清理,我需要将TableA的ID从长度30更改为20。我已经完成了其他表B-Z,以及升级代码单元。但是,当我尝试更改TableA时,会出现以下错误:

“与以下主键相关的更改可能会导致新表中的数据丢失。无法处理更改,因为已更改表的TableSyncSetup type函数的TableUpgradeMode设置为Copy,这不会将数据复制到新表。要解决此问题,必须将TableUpgradeMode选项更改为Move,然后将C/AL代码添加到升级类型函数以处理新的表数据。”

错误是什么意思?我需要将TableA的升级代码单元从TableSyncSetup.Mode::Copy更改为::Move吗?有什么指导吗


我使用的是Dynamics NAV 2016。

是的,您必须更改移动模式,但您还必须创建一个新表,临时保存已减少字段长度的字段中的数据。由于字段长度减少,您还必须处理可能的数据截断问题

但我会用另一种方法(升级工具包中的旧方法)来实现这一点: -创建具有相同字段长度(30)的新表,复制字段内容并清除字段(使用codeunit) -更改字段长度,但在NAV询问同步模式时选择Force(因为您知道这些字段中没有数据-SQL可以删除并重新创建列) -使用第二个代码单元将数据复制回缩减字段-处理截断


我希望它能有所帮助

如果它这么说的话,可能是表a中有一条ID长度大于20的记录?