我正在测试从 1.9 版到 2.2 版的 Moodle 站点升级。在一个测试盒上,我创建了我的 Moodle 1.9 站点的副本。为了让站点在测试框架上运行,我必须做的一件事是将硬编码的 URL 更新为在测试机器上有效的东西。为此,我使用 Moodle 1.9 中的管理/替换功能,即
http://mytestsite/admin/replace.php
在生成的表单中,我指定了要切换的 URL。根据文档,此处的脚本将继续遍历 Moodle 安装中的所有表并运行如下所示的脚本:
UPDATE adodb_logsql
SET PARAMS = REPLACE(PARAMS, 'some_url', 'another_url')
更新过程似乎工作正常。但是,它有以下意想不到的副作用:
保存在数据库中的站点中的某些内容看起来在 REPLACE 过程中已损坏:
Before: Welcome to Company’s Learning
After : Welcome to Company’s Learning
根据 MySQL,REPLACE 语句是多字节安全的。
我的问题:
- 我究竟做错了什么?一个简单的
REPLACE
不应该有这些奇怪的副作用。 - 有没有简单的方法可以消除损坏?
测试服务器:* IIS 7 * PHP 5.3.13 * MySQL 服务器 5.5