CakePHP动态创建数据源会产生错误

时间:2011-12-28 11:05:55

标签: php cakephp error-handling

我创建了一个类方法,可以动态创建数据源,以检查给定的数据库连接信息是否正确。保存连接信息的数组采用以下格式:

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错误向我的客户端显示错误。

有什么好主意吗?

1 个答案:

答案 0 :(得分:2)

捕获MissingDatabaseException并使用getMessage()将错误消息设置为会话闪存。

try {
    ConnectionManager::create('Default', $config);
    $db = ConnectionManager::getDataSource('default');
} catch (MissingDatabaseException $e) {
    $this->Session->setFlash($e->getMessage()); 
}

像这样。