Cakephp内联的错误消息 - 缺少数据库连接

时间:2014-08-30 18:18:52

标签: php mysql cakephp cakephp-2.3

我通常在带有wamp的localhost中完成了我的网站,它就是内联上传的时刻。

我使用了Cakephp 2,其安全组件阻止了所有网站。所以我必须先登录我,然后直接进入应用程序。 我已经将我的数据库上传到我的网络服务器上的phpmyadmin(OVH - Perso offer,所以没有ssh可用)。 我已经使用我的数据库信息配置了database.php文件。我很确定,那就是那个,因为它和我的主网站一样(因为这个应用程序是我用Cakephp开发的网站根目录下的文件夹)。

乍一看,当我尝试访问我的网站时,我收到此错误消息,我不知道为什么......:

Missing Database Connection
Error: A Database connection using "Mysql" was missing or unable to connect.    
The database server returned this error: SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock' (2)

Notice: If you want to customize this error message, create app/View/Errors/missing_connection.ctp

Stack Trace
CORE/Cake/Model/Datasource/DboSource.php line 260 → Mysql->connect()
CORE/Cake/Model/ConnectionManager.php line 105 → DboSource->__construct(array)
CORE/Cake/Model/Model.php line 3482 → ConnectionManager::getDataSource(string)
CORE/Cake/Model/Model.php line 1128 → Model->setDataSource(string)
CORE/Cake/Model/Model.php line 3504 → Model->setSource(string)
CORE/Cake/Model/Model.php line 1357 → Model->getDataSource()
CORE/Cake/View/Helper/FormHelper.php line 215 → Model->schema()
CORE/Cake/View/Helper/FormHelper.php line 468 → FormHelper->_introspectModel(string, string)
APP/View/Layouts/login.ctp line 30 → FormHelper->create(string)
CORE/Cake/View/View.php line 948 → include(string)
CORE/Cake/View/View.php line 910 → View->_evaluate(string, array)
CORE/Cake/View/View.php line 542 → View->_render(string)
CORE/Cake/View/View.php line 479 → View->renderLayout(string, string)
CORE/Cake/Controller/Controller.php line 954 → View->render(null, null)
CORE/Cake/Routing/Dispatcher.php line 198 → Controller->render()
CORE/Cake/Routing/Dispatcher.php line 165 → Dispatcher->_invoke(UsersController, CakeRequest)
APP/webroot/index.php line 108 → Dispatcher->dispatch(CakeRequest, CakeResponse)

我的database.php文件:

class DATABASE_CONFIG {

  public $default = array(
      'datasource' => 'Database/Mysql',
      'persistent' => false,
      'host' => 'localhost',
      'login' => 'root',
      'password' => '',
      'database' => 'prolity',
      'prefix' => '',
      //'encoding' => 'utf8',
  );

  public $ovh = array(
      'datasource' => 'Database/Mysql',
      'persistent' => false,
      'host' => '***',
      'login' => '***',
      'password' => '***',
      'database' => '***',
      'prefix' => '',
      'encoding' => 'utf8',
  );
}

我只使用$ ovh,并且在bootstrap.php中选择得很好。 我甚至试图把

  

'unix_socket'=> '/Applications/MAMP/tmp/mysql/mysql.sock'

但这是一回事。

我已经全部接受过审核,一切似乎都是正确的。 谷歌没有帮助我,我转向你,因为我没有任何其他想法。

我可以给你链接内联,但我认为这不是必要的。

谢谢你的帮助,

Etix。

2 个答案:

答案 0 :(得分:1)

上传到服务器后是否更新了数据库配置?基于错误消息,我认为不是。

Can't connect to local MySQL server through socket '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock'

确实怀疑OVH服务器会使用XAMPP。

答案 1 :(得分:0)

问题是使用其他数据库的声明不在正确的位置。 OP在bootstrap.php中使用了这一行

Cache::config('default', array('engine' => 'File'));

尝试更改使用的数据库。该行用于缓存文件,因此它无法通过数据库设置。要告诉模型使用其他数据库(default除外),您需要更改model attribute并执行

class Example extends AppModel {
    public $useDbConfig = 'ovh';
}

这仅适用于一个模型,但如果您想为整个应用程序执行此操作,则可以将该行添加到AppModel

class AppModel extends Model{
    public $useDbConfig = 'ovh';
}

(当然,不会在其他模型中覆盖它)。