Cakephp не может изменить базу данных на лету
Я пытаюсь подключиться из нескольких баз данных из цикла, но видит CakePHP может 'т изменитьdatabase
, только другие данные (например, пользователь / пароль / хост).
приложение / Config / database.php
Company->find('all'); foreach($companies as $company) { $settings = array( 'datasource' => 'Database/Mysql', 'host' => $company['Company']['host'], 'login' => $company['Company']['username'], 'password' => $company['Company']['password'], 'database' => $company['Company']['database'], ); ConnectionManager::drop('client'); $db = ConnectionManager::create('client', $settings); try { debug($this->MyModel->find('first')); } catch (Exception $e) { echo '
'; echo "Exception: ", $e->getMessage(), "\n"; /* debug($this->MyModel->getDataSource()); Outputs: [...] [config] => Array ( [persistent] => [host] => 0.0.0.0 // CORRECT HOST [login] => root // CORRECT LOGIN [password] => pass // CORRECT PASSWORD [database] => database1 [port] => 3306 [datasource] => Database/Mysql [prefix] => [encoding] => utf8 ) [...] */ } }
Он возвращает первое соединение и все остальные я ничего не могу выбрать из MyModel, потому что это неправильно. Он видит соединение от пользователя / пароля / хоста в порядке, но база данных не изменена, поэтому пользователь не имеетРазрешение на выбор в базе данных, я получаю сообщение об ошибке.
Array ( // First connection, connection ok, MyModel return nothing ) // Second connection Exception: SQLSTATE[42000]: Syntax error or access violation: 1142 SELECT command denied to user 'database_user_2'@'localhost' for table 'my_model' // Third connection Exception: SQLSTATE[42000]: Syntax error or access violation: 1142 SELECT command denied to user 'database_user_3'@'localhost' for table 'my_model' // Fourth connection Exception: SQLSTATE[42000]: Syntax error or access violation: 1142 SELECT command denied to user 'database_user_4'@'localhost' for table 'my_model' // Fifth connection Exception: SQLSTATE[42000]: Syntax error or access violation: 1142 SELECT command denied to user 'database_user_5'@'localhost' for table 'my_model'
Спасибо!