断开mysql连接时,Cakephp Disconnect Model :: find()PDO引用

时间:2018-06-18 04:53:19

标签: pdo cakephp-2.9

我有多个数据库,我试图使用同一个用户进行查询。在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()连接引用?

0 个答案:

没有答案