Tag Archives: SQLSetNames

MT 4 最烦人的BUG: 反复提示升级

我前面的文章一直夸 MT 4 的一些优点,今天实在忍不住了,说说 MT 4 这个恼人的 Bug。

从 MT 3.3x 升级到 MT 4 之后,经常在登录的时候会提示:

Time to Upgrade!

而且,这个提示还是没办法跳过去的,只得选择 Upgrade,Upgrade 之后,很多配置和模版的内容又变成默认的,还要重新设定。可没几天,又会提示升级。烦死。

在 MT 邮件列表里发了这个消息(可怜我的蹩脚英语啊),发现很多人都遇到了类似的情况。但是 Byrne Reese 似乎一时也找不到好的办法,许诺谁能协助解决将有奖励: ” A $50 Amazon Gift Certificate/Bounty has been declared for anyone who can help us track down the root cause of this”。此外,MT 4.01 Beta 版的问题列表也说这个问题还没有解决。

经过观察,发现每次都是提示数据库 Schema 版本从 MT 3.2 升级到 4.0026。邮件列表里有个人的提示很有帮助:

The upgrade check is in MT/App/CMS.pm, sub init_request.  It occurs when the schema version stored in the database ($app->config('SchemaVersion')) < the schema version stored in the application code ($app->schema_version). 

数据库里面 Schema Version 存储在 MT_CONFIG 表里,检查这个表的记录(共有20多条),发现第一条(config_id) 的config_data字段的值为:

SchemaVersion 4.0026
SQLSetNames 0

而其他行的值是 :

SQLSetNames 0

也就是说其他行是不包含 SchemaVersion 的值。猜测升级程序在这里取值取错了(这个表的设计也够糟糕的了),立刻找一个全新的 MT 4 安装,发现这个表是只有一行记录的。决定删掉多余的记录。目前没有发现错误。

是否彻底避免了这个问题,还有待观察。如果你等不及的话,可以看看 MT_CONFIG 表的数据是否也是类似我这样的。

EOF