CakePHP数据库连接"Mysql"丢失,或无法创建

Ben*_*ine 32 php mysql macos mamp cakephp

关于这一点还有其他一些帖子,但没有一个答案似乎对我有用.

当我导航到本地计算机上的CakePHP页面时,出现一个错误:

Cake无法连接到数据库.数据库连接"Mysql"丢失或无法创建.

当我在home.ctp中运行这个有用的代码时,我收到以下响应:

错误!:SQLSTATE [42000] [1049]未知数据库'test'

但是,我Users/Ben/Sites/myapp/app/Config/database.php看起来像这样(我将MAMP设置为在Users/Ben/Sites中查找文档根目录):

<?php
class DATABASE_CONFIG {

    public $default = array(
        'datasource' => 'Database/Mysql',
        'persistent' => false,
        'host' => 'localhost',
        'login' => 'Ben',
        'password' => 'mypass',
        'database' => 'CV',
    );
}
Run Code Online (Sandbox Code Playgroud)

我创建了一个Ben用密码调用的mysql用户,mypass并在其CV下创建了一个名为的数据库.而且,我无法在test任何地方找到数据库.救命?

Dom*_* C. 48

尝试添加套接字:

'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
Run Code Online (Sandbox Code Playgroud)

  • 所以你不知道在哪里添加这个,把它放在你的数据库配置的最后一行(例如默认)...我是例如使用XAMPP,文件在这里:/ Applications/XAMPP/xamppfiles/var /mysql/mysql.sock (6认同)
  • 不是每个人都在使用xampp(特别是对于那里的OS X人).找出你的mysql.sock在哪里.我正在使用OS X 10.9+,它是:'unix_socket'=>'/ tmp/mysql.sock',Apple一直在改变mysql.sock的位置.将该行包含为$ default数组的最后一部分 (3认同)

ena*_*gra 20

unix_socket(尤其是对于OS X人员)的替代方案是替换localhost127.0.0.1

将如下:

public $default = array(
                'datasource' => 'Database/Mysql',
                'persistent' => false,
                'host' => '127.0.0.1',
                'login' => 'user',
                'password' => 'password',
                'database' => 'database-name',
                'prefix' => '',
                'encoding' => 'utf8',
        );
Run Code Online (Sandbox Code Playgroud)

  • 这在OS X上对我有用。谢谢 (2认同)

Kin*_* Jk 11

编辑php.ini并添加:

extension=php_pdo_mysql.dll 
Run Code Online (Sandbox Code Playgroud)

然后重新启动Web服务器


小智 9

在Mac上,使用MAMP作为开发平台,正确的解决方案是使用Domingo Casarrubio解决方案.

unix_socket参数添加到数据库配置中.

'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
Run Code Online (Sandbox Code Playgroud)


小智 6

如果您的连接数据库用户没有适当的权限,也可能导致此错误.我相信你只需要最少的INSERT,SELECT,UPDATE和DELETE.

始终首先检查用户名/密码用户权限,因为CakePHP很可能会给出模糊的数据库连接错误.


小智 5

我遇到了同样的问题,最终发现这是由于 CakePhp 不接受我使用带有密码的用户造成的,即使该用户是在 PHPMyAdmin 中创建的。我必须使用没有密码的用户“root”。

我在对文件/lib/Cake/Error/exceptions.php进行以下更改后发现了这一点。

原来的行:

protected $_messageTemplate = 'Database connection "%s" is missing, or could not be created.';
Run Code Online (Sandbox Code Playgroud)

改为这样(注意从单引号到双引号的更改):

protected $_messageTemplate = "Database connection \"%s\" is missing, or could not be created:\n    %s";
Run Code Online (Sandbox Code Playgroud)

这将为您提供问题的原因,以便您可以正确地更改原因。


小智 5

我注意到你一年前曾问过这个问题,而且很可能现在已经解决了这个问题.但是,对于那些在尝试在XAMPP上安装CakePHP时遇到相同问题的人,您所要做的就是将"登录"更改为"root",即XAMPP的默认登录名,并将"密码"保留为"",即空白.database.php文件中的完整代码应如下所示:

public $default = array(
    'datasource' => 'Database/Mysql',
    'persistent' => false,
    'host' => 'localhost',
    'login' => 'root',
    'password' => '',
    'database' => 'ckblog',//replace with your own database name
    'prefix' => '',
    //'encoding' => 'utf8',
);
Run Code Online (Sandbox Code Playgroud)

而已.