我想在我的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不是一个选项。
答案 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)
但请记住,编辑核心文件可能会与框架更新冲突,从而导致数据库实现出错。