我有多个数据库,我试图使用同一个用户进行查询。在Config / databases.php中,我设置了许多具有不同数据库的数据源。
public $database1 = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => <db_ip_address>,
'port' => '3310',
'login' => 'user',
'password' => 'password'
'database' => 'database1',
'prefix' => '',
);
public $database2 = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => <db_ip_address>,
'port' => '3310',
'login' => 'user',
'password' => 'password'
'database' => 'database2',
'prefix' => '',
);
public $database3 = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => <db_ip_address>,
'port' => '3310',
'login' => 'user',
'password' => 'password'
'database' => 'database3',
'prefix' => '',
);
在我的控制器中,我使用setDataSource在数据源之间切换,然后运行查询,然后关闭连接。
$this->myModel->setDataSource('database1');
$this->myModel->find('all', array('limit'=>10));
$this->myModel->getDataSource('database1')->disconnect();
$this->myModel->setDataSource('database2');
$this->myModel->find('all', array('limit'=>10));
$this->myModel->getDataSource('database2')->disconnect();
$this->myModel->setDataSource('database3');
$this->myModel->find('all', array('limit'=>10));
$this->myModel->getDataSource('database3')->disconnect();
但是,我收到的错误是数据库连接使用&#34; Mysql&#34;丢失或无法连接。有数据库错误的用户&#39;用户&#39;已超出&#39; max_user_connections&#39;资源。
所以我超过了使用同一个用户可以同时连接数据库的数量。
基于http://php.net/manual/en/pdo.connections.php,我认为这是因为find()方法创建了对某个PDO实例的另一个引用,并且断开数据源对象并没有完全关闭连接。如果我删除查找查询,我将无法获得超出最大用户数的错误。有谁知道如何完全关闭find()连接引用?