在 CakePHP 中无法使用 MySQL

Posted

技术标签:

【中文标题】在 CakePHP 中无法使用 MySQL【英文标题】:Can't get going with MySQL in CakePHP 【发布时间】:2012-03-23 09:53:43 【问题描述】:

这是我第一次安装框架,我很无知。

我在 OSX 10.7 上,我将 cakephp 框架加载到 /Library/WebServer/Documents/cakephp 中,我已经能够加载测试页面并消除一些错误和警告。现在我正在尝试解决这个问题

  Warning (2): PDO::__construct() [pdo.--construct]: [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock) [CORE/Cake/Model/Datasource/Database/Mysql.php, line 160]
  Cake is NOT able to connect to the database.
  Database connection "SQLSTATE[HY000] [2002] No such file or directory" is missing, or could not be created.

我真的不知道在这里做什么。我已经安装了 MySQL。 MySQL PDO 是否默认安装在 OSX 上?还是我需要安装它?如果这似乎是问题,我如何检查是否已安装。

更新:

已启用 PDO Mysql 驱动程序。 pro_mysql 的phpinfo() 也是这样的:

 Directive                     Local Value               Master Value
 pdo_mysql.default_socket   /var/mysql/mysql.sock   /var/mysql/mysql.sock 

但是 mysql 目录没有出现在我的文件系统中。我应该创建它吗?还是我需要在某处改变这条路径?

更新: 我认为问题在于我实际上还没有建立数据库。我有点笨,不设置数据库。

我想我现在会试着弄清楚。

更新:

最终解决这个问题的是 cake 正在寻找/var/mysql/mysql.sock 中数据库的 Unix 套接字,但 mysql 正在使用 /tmp/mysql.sock 中的套接字 我通过创建从/var/mysql/mysql.sock/tmp/mysql.sock 的符号链接来解决此问题。

【问题讨论】:

只需使用phpinfo() 函数创建一个简单文件并搜索pdo_mysql 变量。 您可以使用 CakePHP 的 database.php 中的 unix_socket 字段并将其设置为 /tmp/mysql.sock,而不是添加符号链接。 【参考方案1】:

看起来更像是 MySQL 本身没有安装,但是 PDO 库是用你的网络服务器编译的。我不确定如何在 OSX 中检查,但您可以尝试检查此链接:http://www.sequelpro.com/docs/Install_MySQL_on_Mac_OS_X

编辑

登录 MySQL (mysql -u root -p) 并创建数据库:

create database cakephp

然后创建一个新的用户名/密码并授予他们访问该数据库的权限。假设您要创建用户名 cakephp 和密码 cakepass:

GRANT ALL ON cakephp.* TO cakephp@localhost IDENTIFIED BY 'cakepass';
FLUSH PRIVILEGES;

现在您的 database.php 配置文件应该如下所示:

<?php
class DATABASE_CONFIG 
    public $default = array(
        'datasource'  => 'Database/Mysql',
        'persistent'  => false,
        'host'        => 'localhost',
        'login'       => 'cakephp',
        'password'    => 'cakepass',
        'database'    => 'cakephp',
        'prefix'      => ''
    );

【讨论】:

我确实安装了 MySql,我想我可能记得给它一个密码。蛋糕里有什么地方需要我输入密码吗? 通常你会在 cakePHP 的安装过程中输入你的数据库值(你可能需要在配置文件中更改这些值,我已经很久没有这样做了)。要查看您的 MySQL 服务器是否正在运行,请打开一个终端并尝试使用以下命令访问它:mysql -u root -p 输入 'help' 或 \h 获取帮助 mysql> | 好的,MySQL 已安装并运行。接下来是确保您已经在 CakePHP 中配置了数据库,通常位于 app/config/database.php。 book.cakephp.org/2.0/en/development/configuration.html 谢谢,虽然我读到了,但我想我可能需要先创建一个数据库?【参考方案2】:

不,OSX 不附带 MySQL,您必须安装它。

最简单的解决方案是使用 XAMPP 而不是自己编译/安装 MySQL。如果您不想弄乱本机 OSX 版本,它还会附带单独的 Apache 和 PHP。

【讨论】:

是的,我想安装自己的mysql只是为了学习经验。它实际上已安装,但由于某种原因无法正常工作。 所以,请确保服务器正在运行(在 Activity Monitor 中查找“mysqld”进程),然后使用 mysql 登录凭据和数据库名称设置 Cake(您需要先创建一个数据库)。 Cake 的数据库配置位于 app/config/database.php。

以上是关于在 CakePHP 中无法使用 MySQL的主要内容,如果未能解决你的问题,请参考以下文章

由于缺少 PHP 扩展,CakePHP 3 无法连接到数据库

无法使用 cakePHP requestAction 加载完整视图

CakePHP 应用程序无法在 localhost 中启动

CakePHP问题:无法连接数据库,可能是什么原因?

CakePHP:在帮助程序中查找是不是是移动浏览器(无法访问请求处理程序)

CakePHP 2.2.4 无法使用 HAVING 子句和计算字段对结果进行分页 - Haversine 公式