首页 > 解决方案 > 更改配置文件自定义字段类型(Sitefinity 6.3)

问题描述

我有一个旧安装的 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.]

正如我所见,不知何故语言指定的值没有被转换。现在整个站点都关闭了,我无法访问后端。所以我想我必须在数据库中解决这个问题?

标签: sitefinity

解决方案


我在类似情况下所做的是:

我创建新字段,然后用旧列(字段)中的值填充数据库中的新列。

在您的情况下,您将查看sf_sitefinity_profile表。

这样,数据将迁移到新字段。

之后,您可以删除旧字段并开始使用新字段。


推荐阅读