Typo3 8升级到9后升级向导无法运行报TCA弃用错误如何解决
Typo3 v8升级v9后升级向导TCA相关错误解决方案
错误根因
Ajax错误是因为废弃警告输出破坏了升级向导的响应JSON格式,核心触发原因是Typo3 v9已完全废弃
pages_language_overlay表,你的项目中仍存在对该表的TCA配置引用,系统自动迁移时抛出的废弃警告打断了正常流程。
修复步骤
- 第一步:全局排查
pages_language_overlay引用
遍历以下路径的代码,找到所有引用该表的位置:- 自定义扩展的
Configuration/TCA/目录 - 所有扩展的
ext_tables.php文件 - 第三方扩展的TCA配置文件(如果是第三方扩展导致,优先升级扩展到支持Typo3 v9的版本)
- 自定义扩展的
- 第二步:移除无效TCA配置
删除或注释所有注册pages_language_overlay表的相关代码,示例待删除代码如下:// 示例待删除代码1:允许表在标准页面使用 \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::allowTableOnStandardPages('pages_language_overlay'); // 示例待删除代码2:直接注册TCA $GLOBALS['TCA']['pages_language_overlay'] = [...]; - 第三步:同步数据库结构
先手动清空typo3temp/var/cache目录下的所有缓存文件,再进入后台安装工具(Install Tool)的「数据库结构分析」页面,执行所有系统提示的字段、索引创建操作,补全报错信息中列出的所有缺失的数据库结构。 - 第四步:临时关闭废弃警告运行升级向导
如果升级向导仍因错误提示打断,可临时修改typo3conf/LocalConfiguration.php的配置项,过滤废弃警告输出:
升级向导所有步骤执行完成后,可根据开发需求恢复原有错误提示配置。return [ 'BE' => [ 'debug' => 0, ], 'SYS' => [ 'displayErrors' => 0, 'errorHandlerErrors' => E_ALL & ~E_DEPRECATED & ~E_USER_DEPRECATED, ], // 其余配置保持不变 ]; - 第五步:验证多语言数据
升级完成后进入后台站点管理模块,配置对应站点的语言规则,确认原有页面的多语言翻译数据已正常迁移至pages表的对应字段。
内容的提问来源于stack exchange,提问作者Mohamed Masmoudi
相关产品推荐
相关产品推荐

