第一个问题:你怎么不知道你运行的是什么版本的 webform?它在站点的模块或更新页面中显示什么?如果那里什么都没有显示。系统表中 DB 模式的值是多少?
第二个问题:我的一位同事因为安装了模块的开发版本而弄得一团糟。您确定您之前只使用了 beta 版或稳定版,而不是 dev 快照?
那么,至于解决方案……
我没有任何方便的站点来尝试重现您的问题。但是您收到的警告并不是真正的问题...在我看来,问题似乎是网络表单的更新无法正常运行或无法正确报告成功。
生成警告的代码位在 update.php 文件中,它是:
if ($_SESSION['update_success']) {
$output = '<p>Updates were attempted. If you see no failures below, you may proceed happily to the <a href="'. base_path() .'?q=admin">administration pages</a>. Otherwise, you may need to update your database manually.'. $log_message .'</p>';
}
else {
list($module, $version) = array_pop(reset($_SESSION['updates_remaining']));
$output = '<p class="error">The update process was aborted prematurely while running <strong>update #'. $version .' in '. $module .'.module</strong>.'. $log_message;
if (module_exists('dblog')) {
$output .= ' You may need to check the <code>watchdog</code> database table manually.';
}
$output .= '</p>';
}
所以,只有在更新过程中出现问题时,才会运行生成错误的代码。因此,它看起来是您正在更新的模块中的一个错误。
如果我遇到你的情况我绝对想要或需要最新的更新我会尝试手动执行更新。以下是如何做到这一点(我假设您的模块是 webform,但该过程也适用于其他模块:
- 备份您的数据库!
- 确保您已安装开发者模块。
- 浏览数据库表“系统”并找出您当前为 webform 模块安装的架构版本(通常是一个以 6 开头的四位数字)。
- 打开模块目录中的 webform.install 文件,并搜索架构版本大于现有版本的所有更新。它们看起来像名为
webform_update_6XXX() 的函数。
- 在http://example.com/devel/php 提供的 php 控制台中,一次运行所有这些更新,直到找到破坏系统并可以对其进行调试的更新。
-
File a bug 与您的补丁一起使用,以便社区可以从您的工作中受益。
- 一旦您解决了该问题并安装了所有更新,您就可以使用上次运行的架构编号手动设置系统表。
您可以尝试的另一个选项:
- 备份您的数据库!
- 停用并完全卸载 webform 模块。
- 安装新版本的网络表单。
- 通过 SQL 从备份数据库中的表中手动导入数据
这两个选项都可能很棘手且耗时。
希望这会有所帮助!