CakePHP动态创建数据源创建错误


CakePHP Create Datasource on the fly create an error

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

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.

因为数据库模式wp33在我的数据库服务器上不存在。

我喜欢做的是停止从CakePHP端错误,并显示一个错误到我的客户端$this->Session->setFlash而不是默认的CakePHP错误。

有什么好主意吗?

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

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

就像这样