Я создал метод класса, который создает источник данных на лету, чтобы проверить правильность информации о подключении к базе данных. Массив, содержащий информацию для соединения, имеет следующий вид:
Array
(
[datasource] => Database/Mysql
[persistent] => 0
[host] => localhost
[login] => root
[password] =>
[database] => wp33
[prefix] => dr_
[encoding] => UTF8
[port] =>
)
и мой метод содержит этот код:
@App::import('Model', 'ConnectionManager');
ConnectionManager::create('Default', $config);
$db = ConnectionManager::getDataSource('default');
if(!$db->isConnected())
{
$this->Session->setFlash(__d('dir', 'Could not connect to database.'), 'Flash/error');
return;
}
Обратите внимание, что $ config содержит данные из вышеуказанного массива.
Проблема в том, что код метода возвращает эту ошибку:
Отсутствует соединение с базой данных
Ошибка: SQLSTATE [42000] [1049] Неизвестная база данных «wp33» требует подключения к базе данных
Ошибка: подтвердите, что вы создали файл: app \ Config \ database.php.
потому что база данных shema wp33 не существует на моем сервере баз данных.
Что мне нравится делать, так это прекращать эту ошибку со стороны CakePHP и отображать ошибку для моего клиента с помощью $ this-> Session-> setFlash вместо ошибки CakePHP по умолчанию.
Есть ли хорошая идея?