[英]Database connection “Mysql” is missing and mysql.sock is missing
我试图从蛋糕命令行工具生成模型代码。 但是遇到了这个问题。
Warning Error: PDO::__construct(): [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock) in [/Users/test/Google_WWW/project_name/lib/Cake/Model/Datasource/Database/Mysql.php, line 177]
Error: Database connection "Mysql" is missing, or could not be created. (although it's showing that mysql database is connected at localhost in cakephp directory)
我正在使用 MAMP。
我搜索了很多并找到了一些解决方案。 例如,这个CakePHP:没有这样的文件或目录(尝试通过 unix:///var/mysql/mysql.sock 连接)
或者我也可以做一个mysql.sock的符号链接。
/Applications/MAMP/tmp/mysql/mysql.sock (not present in directory)
但在我做任何事情之前,问题是该目录中不存在 mysql.sock 文件。 我已经尝试重新安装 MAMP 但仍然没有 mysql.sock。
请帮我解决这个问题? 我可以创建自己的 mysql.sock 文件吗?
编辑:我的数据库配置
public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'root',
'password' => 'root',
'database' => 'db_name',
'prefix' => ''
);
MAMP 在 mysql 方面很奇怪。 您可能需要设置一个符号链接,以便它知道在哪里可以找到它。 类似的东西:
sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock
在搜索并尝试了很多东西之后,我终于设法解决了我的问题。 上面给出的 Chuck Burgess 的答案可以解决这个问题,但我的情况有点不同,我无法在以下位置看到 mysql.sock 文件:
/Applications/MAMP/tmp/mysql/mysql.sock
我以为我的 mysql.sock 丢失了,但实际上它在那里并且隐藏了(这很奇怪!我使用 CLI 去了那个文件夹并看到了那个)。 我正在使用 MAC 和以 '.' 开头的文件。 通常是隐藏的,但不知道为什么 mysql.sock 被隐藏,所以我所做的是在我的数据库配置文件中我添加了 1 个参数(unix_socket),我的问题就解决了。
'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock'
就我而言,这是因为我调用了错误版本的 PHP。 即我使用/usr/bin/php
当 MAMP Pro 的 php 是/Applications/MAMP/bin/php/php5.3.29/bin/php
整个周末我都在为此苦苦挣扎,终于解决了。 结果是 php.ini 指向一个不存在的“扩展目录”。 创建一个 phpinfo() 文件并查看该字段的值:
我注意到在mamp php installed文件夹中有一个no-debug-non-zts-20131226文件夹,与phpinfo()中显示的值不同。 我所做的是克隆这个文件夹并将名称更改为 phpinfo() 的值。 也许你可以修改 php.ini 文件,但我不想。
我看到你解决了你的问题,但我的问题不同,所以我发布这个答案是为了帮助未来的谷歌员工寻找类似的问题。
希望这会有所帮助。
在我的情况下,问题是在停电后出现的。 所以我通过删除 /Applications/MAMP/tmp/mysql/mysql.pid 文件并重新启动 MAMP 来修复它。
使用 MAMP 在文件夹 /var/mysql/ 中创建一个符号链接:
须藤 ln -n /Applications/MAMP/tmp/mysql/mysql.sock /var/mysql/mysql.sock
同样的问题在这里,但设法解决它连接到 IP:Port,而不是套接字。
'host' => '127.0.0.1', //use 172.0.0.1 instead of localhost
'port' => '8889', //default MAMP MySQL devel port, default production port is 3306
忘记套接字连接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.