Orchard CMS中奇怪的分类法迁移问题(1.6到1.7.2)

时间:2014-01-08 09:36:11

标签: migration orchardcms infinite-loop taxonomy orchardcms-1.7

crosspost:https://orchard.codeplex.com/discussions/484033

我正在从Orchard CMS 1.6迁移到1.7.2。为了给出一些背景知识,我在通过更新表格来迁移分类法中的术语之前遇到了先前的问题:

UPDATE Contrib_Taxonomies_TermPartRecord
SET Path = '/' + Path
WHERE Path NOT LIKE '/%'

UPDATE Contrib_Taxonomies_TermPartRecord
SET Path = '/'
WHERE Path IS NULL

所以我有一些内容类型,它们有一些与之相关的分类。

  1. 我可以创建没有相关分类术语的新内容项 (什么也不做)
  2. 我可以创建仅包含一些特定术语的新内容项(未在条款中看到模式)
  3. 我无法创建/保存/发布与某些特定字词相关联的新内容项(页面只是尝试加载,就像后台有无限循环一样)
  4. 最糟糕的是,即使在调试模式下也不会抛出或记录任何错误。

    任何人都有任何想法或线索?有没有人遇到过类似的行为?

    谢谢!

2 个答案:

答案 0 :(得分:1)

此问题已经提出here

我认为版本1.7.2中使用的Taxonomy模块在Container(Taxonomy)和Term之间有一个额外的链接,但在迁移旧版本时没有正确实现。

在发布包含受影响术语的内容项时,断开的链接会导致无限循环(请参阅上面的超链接)(我没有遇到任何问题保存它,仅当出版)。

通过对数据库运行下面的SQL语句,可以轻松修复链接:

UPDATE
    Common_CommonPartRecord
SET
    Container_Id = Orchard_Taxonomies_TermPartRecord.TaxonomyId
FROM
    Common_CommonPartRecord
    INNER JOIN Orchard_Taxonomies_TermPartRecord ON
        Common_CommonPartRecord.Id = Orchard_Taxonomies_TermPartRecord.Id

SQL语句将从表 Orchard_Taxonomies_TermPartRecord 中获取 TaxonomyId ,并将其填入表 Common_CommonPartRecord

的* Container_id *中

答案 1 :(得分:0)

我设法找到了解决这个问题的方法,如果有人想要,我就是这样做的:

  1. 列出受影响的分类条款
  2. 添加新条款以替换受影响的条款
  3. 将旧术语映射到新术语(主表是 Orchard_Taxonomies_TermPartRecord,与Title_TitlePartRecord一起加入 和Orchard_Framework_ContentItemRecord)
  4. 更新Orchard_Taxonomies_TermContentItem记录(使用条款标记内容项)以用新的
  5. 替换旧条款
  6. 删除旧的受影响的字词
  7. 将旧条款重命名为旧的条款
  8. 这是一个乏味而细致的过程,所以我建议你这样做是最后的手段。花了我一个小时左右。