2015-07-12 73 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

感謝您的評論 –