我创建了一个类方法,可以动态创建数据源,以检查给定的数据库连接信息是否正确。保存连接信息的数组采用以下格式:
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错误向我的客户端显示错误。
有什么好主意吗?
答案 0 :(得分:2)
捕获MissingDatabaseException并使用getMessage()将错误消息设置为会话闪存。
try {
ConnectionManager::create('Default', $config);
$db = ConnectionManager::getDataSource('default');
} catch (MissingDatabaseException $e) {
$this->Session->setFlash($e->getMessage());
}
像这样。