代码之家  ›  专栏  ›  技术社区  ›  Sebastien H.

YetAotherForum升级遇到SQL DB问题

  •  0
  • Sebastien H.  · 技术社区  · 11 年前

    我们从2001年或2002年开始使用yaf。

    我们论坛的版本是1.7,注册用户超过250万,这就产生了大量数据。。。

    我已经制作了一份实际数据库的副本,我正在尝试将此安装升级到2.1.1版,但在尝试升级时,mssql/tables.SQL文件出现SQL错误:

    文件:mssql/tables.sql

    错误:索引 “_dta_index_yaf_Message_9_757577737__K2_K1_K12_K6_4_5_7_8_10_11”是 依赖于列“IP”。ALTER TABLE ALTER COLUMN IP失败,原因是 一个或多个对象访问此列。

    声明:如果存在(请从sys.columns中选择前1 1,其中 object_id=object_id('[dbo].[yaf_Message]'链接和名称='IP'和 精度<39)开始改变表[dbo]。[yaf_Message]更改列 [IP]varchar(39)非空结尾

    YAF.Classes.Data.LegacyDb.system_initialize_executescripts(字符串 脚本,字符串scriptFile,布尔值useTransactions)+1540 YAF.Core.Services.InstallUpgradeService.ExecutScript(字符串 scriptFile,Boolean useTransactions)+188 YAF.Core.Services.InstallUpgradeService.UpgradeDatabase(布尔值 全文,布尔升级扩展)+205 YAF.Install.default.Ward_NextButtonClick(对象发送者, 向导导航事件参数e)+1559 System.Web.UI.WebControls.Wizard.OnBubbleEvent(对象源, EventArgs e)+584 System.Web.UI.Control.RiseBubbleEvent(对象 源,EventArgs参数)+84 System.Web.UI.Page.ProcessRequestMain(布尔 includeStagesBeforeSyncPoint,布尔includeStagesAfterSyncPoint) +3804

    是否必须修改某些表字段?

    我的另一个解决方案是手动导入每个用户、论坛等,但这需要相当长的时间,所以我真的希望让安装程序自动升级DB。

    1 回复  |  直到 5 年前
        1
  •  0
  •   TylerH Ash Burlaczenko    5 年前

    理论上你可以做到以下几点:;

    1. 备份数据库(再次)
    2. 编写索引到新窗口的脚本。
    3. 删除索引。
    4. 应用更新。
    5. 检查数据是否为空,并根据需要进行修复。
    6. 重新创建索引。
    推荐文章