更新:这是一篇旧博客,有关迁移的最新信息,请查看文档wiki上的指南: https://docs.joomla.org/Migrating_from_1.0.x_to_1.5_Stable
毫无疑问,如果你已经有了 Joomla! 1.0.x 站点,你可能在想如何将你的站点升级到 1.5,你可能也在想是否可以将第三方扩展迁移,甚至可能在想是否可以暂时继续使用 1.0,直到这个奇怪的 1.5 版本稳定下来,人们开始编写新的扩展并更新旧的扩展。所以我想我会写下一些关于迁移到 1.5 的想法,并传播一些消息来帮助人们。
迁移器更新
在迁移领域,已经有了一个更新:迁移工具现在是 RC6 版本。网上的一些教程错误地指出你需要与 Joomla! 发布版本相同的迁移器版本,这是完全错误的。早期的迁移器可以与后来的 Joomla! 版本一起工作,反之亦然,尽管你确实想要最新和最好的版本以使事情正常运行。所以迁移器也应该在你的 Joomla! 版本上工作得很好,但它已经在版本 1.0.10 到 1.0.14RC1 上进行了大量测试,所以至少在这些版本上是建议的。另外,我还在 Mambo 4.5.2、4.5.5 和 4.6.3 上测试了迁移器,并且成功地再次导入那些站点的样本数据(注意:Mambo 没有得到官方支持或完全测试,并非所有数据都可能正确转移)。尽管不是所有数据都会转移,但 Mambo 的核心并没有改变太多,所以我们可以使用与 Joomla! 1.0 完全相同的迁移器与那些 Mambo 版本一起工作,太酷了!
那么RC6有哪些新特性呢?现在可以选择要运行哪些插件(因此可以选择性导出表格),对于开发者来说,API增加了一些功能,使得修改ETLPlugin框架自动生成的SQL语句,以及在插件运行前后添加SQL变得更加容易。此外,还移除了core_log_*表格,这对于一些老旧站点来说可能非常大,这样可以加快生成转储文件的速度。
那么稳定版迁移器呢?如果RC6表现稳定,在接下来的一周左右没有出现任何问题,RC6很可能转变为迁移器的稳定版本。这意味着从迁移器方面来看,我觉得我已经修复了大多数错误,而且它很容易使用。稳定版可能还会对文档进行一些更新,但这应该是唯一的变动。
更新PHP版本
在可能的情况下升级到PHP4.4.x或更高版本,以获得最佳兼容性。PHP 4.3.x版本(特别是4.3.9)存在已知问题,因此升级到最新版本可以在迁移和使用1.5版时减少问题。
iconv错误
我看到了一些关于无效字符的iconv错误信息。在大多数情况下,忽略这些问题似乎没有问题,但它们可能会导致其他问题。如果iconv标记某个问题,那么很可能数据中包含了不正确的信息。检查数据中是否有任何奇怪的字符,或者尝试使用稍微不同的编码,看看是否还存在问题。
我还在论坛上看到了一些通过David Gal的旧指南解决迁移问题的方法,该指南是关于1.0版本的UTF-8设置:https://forum.joomla.org/viewtopic.php?f=11&t=55065,所以请检查是否已经应用了所有提示,尤其是“SET NAMES 'UTF8'”提示。
别忘了前缀!
迁移器会将前缀更改为jos_,而不管原始站点的前缀是什么。这样做是为了标准化前缀。这并不意味着在1.5数据库中不能使用其他前缀,但在迁移过程中,“旧前缀”是“jos_”。此外,这并不意味着如果没有jos_前缀就不能导出站点,只是迁移器转储文件总是使用jos_前缀。
内存和时间
如果在迁移过程中有可能,请为PHP进程提供更多的内存和执行时间。这样如果能够增加这些限制,系统可以更快地创建和加载数据转储,减少页面重新加载次数,以避免超出时间或内存限制。虽然迁移系统会尽力而为,但给予它一些空间也是有帮助的。这对于较大的Joomla!实例尤为重要!
行为不端的1.0扩展
在迁移之前,创建一个小的1.5测试安装,并在上面安装您的1.0扩展进行测试,看看是否使用兼容模式。目前一些在1.5上工作不正常的扩展包括mod_pda和Joombackup,根据论坛上的报告,这两个扩展会导致Joomla!无法正常加载。并非所有扩展都会在1.5中得到支持,因此在尝试迁移您的1.0站点之前,在一个全新的(未迁移的)1.5站点上测试它们的行为是很有用的。
是乌龟还是兔子?
Joomla! 1.0 的支持不会在 1.5 发布的那一刻消失,这意味着您不必急于升级到 1.5 并更新所有内容。您可以暂时继续使用 1.0,直到您的扩展兼容 1.5。等待可能会让您获得更好的第三方扩展支持和更轻松的迁移路径。如果您只是使用 Joomla! 的核心功能,那么升级到 1.5 是很容易的,但如果您严重依赖第三方扩展,那么您可能需要联系开发人员编写迁移插件和他们的扩展的 1.5 版本。
SEF
在 Joomla! 1.5 中,我们对 SEF 进行了更新,使其表现更好,但这与 1.0 的风格不同。对于那些在 1.0 中没有安装第三方 SEF 解决方案的用户,您只需在 1.5 中启用 Legacy 插件(带旧版路由)和 Backlink 迁移插件,就可以大约有 90% 的 1.0 SEF URL 被正确路由。如果您有第三方 SEF 扩展,后链迁移系统会从您的菜单中构建一个 SEF 链接列表。这意味着菜单中的任何链接都应该被正确迁移,即使您有第三方 SEF,但并非所有链接都会被迁移。
文件权限
如果您正在进行迁移,请确保给 Apache 赋予对 installation/sql/migration/ 的写入权限,并确保您已经设置了一个可写的临时目录(例如 /tmp)供迁移器使用。迁移器在将转储文件导入 1.5 之前会修改它,以处理诸如不同前缀和音译之类的事情。确保这些目录可写是很重要的。
手动插入
虽然这绝对是操作中最困难的方式,但您也可以手动将转储文件中的大多数表插入 Joomla!。您将需要手动重命名任何关键值以确保没有冲突。我不太确定最好的方法是什么,但如果您有一个现有的 1.5 站点并希望将旧站点的内容插入其中,这是可能的。唯一不适用于此方法的表是菜单表,这必须通过 1.5 迁移过程来特别处理。
核心破解和修改
迁移器不支持对核心数据库表的破解或修改。如果您安装了任何像系统桥接那样修改核心表的软件,那么这些将无法正确迁移。迁移器旨在处理核心表的原样,而不是修改后的形式。如果您想迁移一个修改过的站点,请联系桥接的创建者获取适合您表的迁移器插件(您可以通过覆盖核心插件来覆盖核心插件)。
迁移错误
如果在迁移过程中遇到错误,系统不会让您尝试再次迁移,因为您的数据库可能处于不一致的状态(嘿,它出现错误了!)。这意味着如果您在迁移过程中遇到错误,您将需要重新开始整个 1.5 安装以获得干净的数据库,然后系统将允许您尝试再次迁移。