Discuz Thai

 ลืมรหัสผ่าน
 สมัครสมาชิก

ข้อตกลงการใช้งานกระดานข่าวดิสคัสไทย DiscuzThai Agreement (English Version) ประกาศดิสคัสไทย - ทำเนียบดิสคัสภาษาไทย

Discuz! X3.5 Thai R20231001 Rev.8 (NEW) [วิดีโอช่วยสอน] อัปเกรด Discuz! X3.4 เป็น X3.5 Discord ของ Discuz! Thai Community อย่างเป็นทางการ

Discuz! X3.4 Thai R20220811 (REV.75) สิ้นสุดการสนับสนุน Discuz! X3.4 ภาษาไทยตั้งแต่วันนี้เป็นต้นไป (ขอแนะนำให้อัปเกรดเป็น X3.5 แทน)

ค้นหา
แท็กยอดนิยม: ดิสคัสภาษาไทย Discuz Thai
ดู: 2006|ตอบกลับ: 3

การทำให้ Discuz! X ใช้งานร่วมกับ MariaDB

  [คัดลอกลิงก์]
NilDigit โพสต์ 2015-11-1 19:20:08 |โหมดอ่าน
MariaDB เป็นระบบฐานข้อมูลที่แยกพัฒนาออกจาก MySQL ของ Oracle นะครับ รู้สึกว่าหลังๆจะได้รับความนิยมมากขึ้นพอสมควร อาจจะมีการเปลื่ยนแปลงครั้งใหญ่ในอนาคตก็ได้ จะลองก่อน ก็ไม่เสียหาย จริงไหมครับ?

สำหรับ Discuz! X ยังไม่รองรับ MariaDB จำเป็นต้องโมไฟล์นิดหน่อยเพื่อให้ใช้งานได้ครับ ทำตามนี้เลย

ที่ไฟล์ source\class\db\db_driver_mysql.php หา

  1. function _dbconnect($dbhost, $dbuser, $dbpw, $dbcharset, $dbname, $pconnect, $halt = true) {

  2.                 if($pconnect) {
  3.                         $link = @mysql_pconnect($dbhost, $dbuser, $dbpw, MYSQL_CLIENT_COMPRESS);
  4.                 } else {
  5.                         $link = @mysql_connect($dbhost, $dbuser, $dbpw, 1, MYSQL_CLIENT_COMPRESS);
  6.                 }
  7.                 if(!$link) {
  8.                         $halt && $this->halt('notconnect', $this->errno());
  9.                 } else {
  10.                         $this->curlink = $link;
  11.                         if($this->version() > '4.1') {
  12.                                 $dbcharset = $dbcharset ? $dbcharset : $this->config[1]['dbcharset'];
  13.                                 $serverset = $dbcharset ? 'character_set_connection='.$dbcharset.', character_set_results='.$dbcharset.', character_set_client=binary' : '';
  14.                                 $serverset .= $this->version() > '5.0.1' ? ((empty($serverset) ? '' : ',').'sql_mode=\'\'') : '';
  15.                                 $serverset && mysql_query("SET $serverset", $link);
  16.                         }
  17.                         $dbname && @mysql_select_db($dbname, $link);
  18.                 }
  19.                 return $link;
  20.         }
คัดลอกไปที่คลิปบอร์ด


แก้เป็น

  1. function _dbconnect($dbhost, $dbuser, $dbpw, $dbcharset, $dbname, $pconnect, $halt = true) {

  2.   if($pconnect) {
  3.     $link = @mysql_pconnect($dbhost, $dbuser, $dbpw, MYSQL_CLIENT_COMPRESS);
  4.   } else {
  5.     $link = @mysql_connect($dbhost, $dbuser, $dbpw, 1, MYSQL_CLIENT_COMPRESS);
  6.   }
  7.   if(!$link) {
  8.     $halt && $this->halt('notconnect', $this->errno());
  9.   } else {
  10.     $this->curlink = $link;
  11.     if(version_compare($this->version(), '4.1', '>')) {
  12.       $dbcharset = $dbcharset ? $dbcharset : $this->config[1]['dbcharset'];
  13.       $serverset = $dbcharset ? 'character_set_connection='.$dbcharset.', character_set_results='.$dbcharset.', character_set_client=binary' : '';
  14.       $serverset .= version_compare($this->version(), '5.0.1', '>') ? ((empty($serverset) ? '' : ',').'sql_mode=\'\'') : '';
  15.       $serverset && mysql_query("SET $serverset", $link);
  16.     }
  17.     $dbname && @mysql_select_db($dbname, $link);
  18.   }
  19.   return $link;
  20. }
คัดลอกไปที่คลิปบอร์ด


ต่อไปที่ source\class\db\db_driver_mysqli.php หา

  1. function _dbconnect($dbhost, $dbuser, $dbpw, $dbcharset, $dbname, $pconnect, $halt = true) {

  2.                 $link = new mysqli();
  3.                 if(!$link->real_connect($dbhost, $dbuser, $dbpw, $dbname, null, null, MYSQLI_CLIENT_COMPRESS)) {
  4.                         $halt && $this->halt('notconnect', $this->errno());
  5.                 } else {
  6.                         $this->curlink = $link;
  7.                         if($this->version() > '4.1') {
  8.                                 $link->set_charset($dbcharset ? $dbcharset : $this->config[1]['dbcharset']);
  9.                                 $serverset = $this->version() > '5.0.1' ? 'sql_mode=\'\'' : '';
  10.                                 $serverset && $link->query("SET $serverset");
  11.                         }
  12.                 }
  13.                 return $link;
  14.         }
คัดลอกไปที่คลิปบอร์ด


แก้เป็น

  1. function _dbconnect($dbhost, $dbuser, $dbpw, $dbcharset, $dbname, $pconnect, $halt = true) {

  2.   $link = new mysqli();
  3.   if(!$link->real_connect($dbhost, $dbuser, $dbpw, $dbname, null, null, MYSQLI_CLIENT_COMPRESS)) {
  4.     $halt && $this->halt('notconnect', $this->errno());
  5.   } else {
  6.     $this->curlink = $link;
  7.     if(version_compare($this->version(), '4.1', '>')) {
  8.       $link->set_charset($dbcharset ? $dbcharset : $this->config[1]['dbcharset']);
  9.       $serverset = version_compare($this->version(), '5.0.1', '>') ? 'sql_mode=\'\'' : '';
  10.       $serverset && $link->query("SET $serverset");
  11.     }
  12.   }
  13.   return $link;
  14. }
คัดลอกไปที่คลิปบอร์ด


เพียงเท่านี้ก็สามารถใช้งาน MariaDB ได้แล้วครับ

คะแนน

จำนวนผู้เข้าร่วม 1จิตพิศัย +5 Money +5 ย่อ เหตุผล
i~Designs + 5 + 5 ถูกใจ

ดูบันทึกคะแนน

LagSeeN โพสต์ 2016-6-26 14:35:25
ขอบคุณครับ เดียวจะไปลองดู
LagSeeN โพสต์ 2016-6-27 09:30:23
ลองแล้วครับไม่ผ่านเช่นเดิม
9tum โพสต์ 2019-2-4 18:02:47
https://gitee.com/ComsenzDiscuz/DiscuzX/issues/IJFC7


安装disucz报错,TK求助CP主机回复 不支持MARIADB数据库
百度找到下面解决方案
求指点

查找搜function version()函数,让函数直接return '9.9.9',包含的文件有
source\class\db\db_driver_mysql.php
source\class\db\db_driver_mysqli.php
uc_client\lib\db.class.php
uc_server\lib\db.class.php
api\db\dbbak.php

上面
找到source\class\db\db_driver_mysql.php

    function version() {
            if(empty($this->version)) {
                    $this->version = mysql_get_server_info($this->curlink);
            }
            return $this->version;
    }
怎么注释 高手指点下~

=== 刚刚找到了几个解决方法 ===

    function version() {
            if(empty($this->version)) {
                    $this->version = mysql_get_server_info($this->curlink);
            }
            return '9.9.9';
    }
=======================

function version() {
if(empty(this−>version))$this−>version=′9.9.9′;returnthis->version;
}

=======================

  function version() {
            return '9.9.9';
    }


/// ขอบคุณ ข้อมูล จาก  host4pro
ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | สมัครสมาชิก

รายละเอียดเครดิต

รายชื่อผู้กระทำผิด|Archiver|ดิสคัส ไทย Follow us: Become a fan on facebook. Follow us on Twitter.

GMT+7, 2024-3-29 13:22

Powered by Discuz! X3.4, Rev.66

Copyright © 2001-2021 Tencent Cloud. Licensed

ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้