我有旧版的Sitefinity(版本6.3) 在配置文件上,我有一个数字自定义字段。现在,我需要更改它以容纳字符串。
我发现没有简单的方法来更改数据类型(https://www.progress.com/documentation/sitefinity-cms/edit-an-existing-custom-field),但是通过代码/配置可以吗?
我猜测一种选择是删除字段,然后重新创建它,但这是一种可能,但是由于我有很多数据,因此要还原该字段中的数据将需要大量工作。这是唯一的方法吗?
编辑:我已经删除了该列,并将其重新创建为字符串/ varchar。 我现在遇到某种转换器的问题
type converter initialization failed. The converter with name 'DecimalConverter' does not convert from CLR type 'System. String' to SQL type 'DECIMAL'.
Parameter name: converterName
Actual value was OpenAccessRuntime.Data.DecimalConverter, Telerik.OpenAccess.Runtime, Version=2013.3.1211.3, Culture=neutral, PublicKeyToken=7ce17eeaf1d59342.
堆栈跟踪中的这一行很重要
[MetadataException: The metadata for field 'CustomerNo_sv' of class 'Telerik.Sitefinity.Security.Model.SitefinityProfile' cannot be initialized: Type converter initialization failed. The converter with name 'DecimalConverter' does not convert from CLR type 'System. String' to SQL type 'DECIMAL'.
Parameter name: converterName
Actual value was OpenAccessRuntime.Data.DecimalConverter, Telerik.OpenAccess.Runtime, Version=2013.3.1211.3, Culture=neutral, PublicKeyToken=7ce17eeaf1d59342.]
如我所见,以某种方式不转换语言指定的值。现在整个站点都关闭了,我无法到达后端。所以我想我必须在数据库中解决这个问题?
答案 0 :(得分:0)
在类似情况下,我要做的是:
我创建一个新字段,然后用旧列(字段)中的值填充数据库中的新列。
就您而言,您将查看 sf_sitefinity_profile 表。
通过这种方式,数据将被迁移到新字段。
之后,您可以删除旧字段并开始使用新字段。