在 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 加载完整视图