2014-11-04 61 views
0

我想在我的CodeIgniter應用程序中使用兩個數據庫實例。我在應用程序中設置了db1和db2,但它始終使用第一個數據庫的套接字。CodeIgniter:連接兩個mysql實例

$this->db2 = $this->load->database('db2', TRUE); 

Message: mysqli::real_connect(): (HY000/2002): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) 

,但第二臺服務器上「/var/run/mysqld/mysqld2.sock」 我看不到的地方,告訴它使用第二插座運行。

請注意我還想連接到第一個數據庫,我需要合併兩個複製,所以在php.ini中設置defalut套接字不是一個選項。

+0

[一些非常簡短的谷歌搜索後(https://ellislab.com/forums/viewthread/145901/) – sjagr 2014-11-04 18:04:43

+0

我做過的一切,我選擇DB2作爲你在我的例子中看到調用$這個 - > db2 = $ this-> load-> database('db2',TRUE);問題是,第二分貝mysql2.sock運行,沒有的mysql.sock – fdafgfdgfagfdagfdagfdagfdagfda 2014-11-04 18:17:29

+0

難道真的沒有人有一個答案? – fdafgfdgfagfdagfdagfdagfdagfda 2014-12-14 16:38:59

回答

0

您還需要編輯數據庫配置文件以添加其他設置。例如:

$db['default']['hostname'] = 'localhost'; 
.. 
.. 
.. 
$db['second_db']['hostname'] = 'localhost'; 
+0

他們在本地主機上運行的兩個,這就是爲什麼有兩個插座的mysql.sock和mysql2.sock – fdafgfdgfagfdagfdagfdagfdagfda 2014-11-04 18:10:38

+0

它是好的,如果他們本地主機上運行兩個,只是有配置他們兩個。我會假設數據庫名稱是不同的。 – Kisaragi 2014-11-04 18:27:28

+0

嗯,我有數組,db1和db2。兩臺服務器都有不同的端口和不同的套接字。但PHP仍然總是試圖訪問mysql.sock而不是mysql2.sock,但我同時需要兩者。 – fdafgfdgfagfdagfdagfdagfdagfda 2014-11-04 18:38:52

0

看來這是一件笨失蹤,至少mysqli的驅動程序:插座參數總是在驅動程序代碼NULL。通過修改代碼和配置數組,可以連接到服務器的任何給定套接字。

添加到您的配置

'socket' => '/tmp/mysql.sock', // if no socked uses set it to NULL

而在你/system/database/mysqli/mysqli_driver.php

return $mysqli->real_connect($hostname, $this->username, $this->password, $this->database, $port, $this->socket, $client_flags) 

改變這種但是請記住,編輯核心文件可能會出現衝突與框架更新,導致您的數據庫實施中的錯誤。

http://forum.codeigniter.com/thread-486.html