【问题标题】:CakePHP Create Datasource on the fly create an errorCakePHP 即时创建数据源创建错误
【发布时间】:2012-01-29 02:48:15
【问题描述】:

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

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 错误。

有什么好主意吗?

【问题讨论】:

    标签: php cakephp error-handling


    【解决方案1】:

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

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

    类似的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 1970-01-01
      • 2021-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多