joomla 1.5 mariadb 10

joomla 1.5 mariadb 10

我有一个 cpanel 服务器,我尝试将 MySQL 升级到 MariaDB 10,现在一切正常,除了许多使用 unicode 语言的 Joomla 1.5 网站现在显示问号而不是每个字符:

我必须澄清更多:网站在升级前使用 MySQL 5.5 正确显示,并且数据库中的数据完好无损,因此当我将网站复制到另一个 MariaDB 5.6 服务器时,它显示正确.

我试过: /etc/my.cnf.d/server.cnf

[mysqld]
collation-server=utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server=utf8

和/etc/my.cnf.d/mysql-clients.cnf

[mysql]
default-character-set=utf8

在joomla系统信息中我得到:

Database Collation: N/A (mySQL < 4.1.2)

运气不好

SHOW CREATE TABLE

可能会告诉你哪里出了问题。

问号由此而来:

  • 客户端有一个有效的字符,并且
  • SET NAMES同意客户端的编码,但是
  • 目标列的 CHARACTER SET 不包含预期的字符。

我在 joomla 和 mariadb 论坛上问过,但没有答案,所以我检查并发现了问题,我 post 在这里,所以如果任何人需要受益于 mariadb 10 更旧和不受支持的版本可以使用这个快速修复。

希望对您有所帮助

libraries/joomla/database/database/mysql.php

或(取决于您的设置)

libraries/joomla/database/database/mysqli.php

注释第 186 行

return ($verParts[0] == 5 || ($verParts[0] == 4 && $verParts[1] == 1 && (int)$verParts[2] >= 2));

并改为添加它(假设现在您将拥有支持 unicode 的数据库:

return (1);

代码如下:

function hasUTF()
{
    $verParts = explode( '.', $this->getVersion() );
//  return ($verParts[0] == 5 || ($verParts[0] == 4 && $verParts[1] == 1 && (int)$verParts[2] >= 2));
return (1);
}

最佳