CodeIgniter:连接两个mysql实例

时间:2014-11-04 17:45:51

标签: php mysql codeigniter sockets

我想在我的CodeIgniter应用程序中使用两个数据库实例。我在应用程序中设置了db1和db2,但它总是使用第一个数据库的套接字。

$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 socket不是一个选项。

2 个答案:

答案 0 :(得分:0)

您还需要编辑数据库配置文件以添加其他设置。例如:

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

答案 1 :(得分:0)

似乎CodeIgniter缺少了,至少对于mysqli驱动程序:socket参数在驱动程序代码中始终为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