2015-07-12 74 views
-1

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

我必须澄清一些事情:在升级之前,使用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系统信息获取:

数据库归类:N/A(mySQL的< 4.1.2)

没有运气

+0

这似乎是一个问题,更适合超级用户或serverfault。不过,我想你在关于字符集有一些问题。你可以联系mariadb人,他们愿意给予很好的支持。如果您获得解决方案,请将其发布到此处!:) – jotadepicas

+1

我不同意在每个论坛上提问,因为这很紧急。我想你应该在升级之前问过这里。不,不幸的是我没有任何解决方案。 –

+0

在这个论坛寻找'utf8 question marks user:1766831' –

回答

6

我问Joomla和MariaDB的论坛,没有答案,所以我检查,发现问题,我在这里发布,所以如果有人需要,以造福于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); 
} 

最佳

+0

返回值时,您不需要用圆括号包起来。 'return 1;'或'return true;'这一行也很好。 – halfer

+0

Tnx男人!我的问题。 – Lufa

0
SHOW CREATE TABLE 

可能会告诉你什么是错的。

问号来自这样的:

  • 客户端有一个有效的字符,并
  • SET NAMES与客户有编码一致,但
  • 目标列的CHARACTER SET不包括预期的性格。
+0

感谢您的评论 –