【问题标题】:Database connection "Mysql" is missing and mysql.sock is missing缺少数据库连接“Mysql”并且缺少 mysql.sock
【发布时间】:2013-10-19 16:14:39
【问题描述】:

我试图从 cake 命令行工具生成模型代码。但是遇到了这个问题。

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: No such file or directory (trying to connect via 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' => ''
);

【问题讨论】:

  • 能否请您发布您的数据库配置参数?
  • 编辑了我的问题,我必须说的一件事是数据库连接没有任何问题。但是对于通过 cakephp cli 创建模型,它使用了我提到的 mamp 文件夹中不存在的 mysql.sock。
  • 如果您尝试使用 127.0.0.1 而不是 localhost 会怎样?
  • 不,还是同样的问题.. 感谢您的回复!

标签: mysql cakephp mamp mysql.sock


【解决方案1】:

这里同样的问题,但设法解决它连接到 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

忘记套接字连接。

【讨论】:

    【解决方案2】:

    使用 MAMP 在文件夹 /var/mysql/ 中创建一个符号链接:

    sudo ln -n /Applications/MAMP/tmp/mysql/mysql.sock /var/mysql/mysql.sock

    【讨论】:

      【解决方案3】:

      就我而言,问题是在停电后出现的。所以我通过删除 /Applications/MAMP/tmp/mysql/mysql.pid 文件并重新启动 MAMP 来修复它。

      【讨论】:

      • 这打破了我的 mamp :-(
      【解决方案4】:

      就我而言,这是因为我调用了错误的 PHP 版本。 IE。我用的是/usr/bin/php,当MAMP Pro的php是/Applications/MAMP/bin/php/php5.3.29/bin/php

      【讨论】:

      • 你是怎么做到的
      【解决方案5】:

      MAMP 对 mysql 来说很奇怪。您可能需要设置一个符号链接,以便它知道在哪里可以找到它。比如:

      sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock

      【讨论】:

      • 感谢您的回复。我确实创建了一个符号链接,但我的问题没有解决。
      • 要将其与 php-cli 一起使用,在创建符号链接后,编辑您的 php.ini:pdo_mysql.default_socket= /tmp/mysql.sockmysql.default_socket = /tmp/mysql.sockmysqli.default_socket = /tmp/mysql.sock
      • 在我的情况下根本没有创建文件。你能告诉我如何让mamp生成文件吗?但 phpmyadmin 工作得很好
      • 上面的博客链接失效了。此符号链接解决方案也针对 MAMP,而不是 MAMP PRO
      • 好极了,您的解决方案确实有效。我在这个问题上停留了将近 2 周
      【解决方案6】:

      我整个周末都在努力解决这个问题,终于解决了。原来 php.ini 指向一个不存在的“扩展目录”。创建一个 phpinfo() 文件并查看该字段的值:

      我注意到在mamp php 安装文件夹中有一个no-debug-non-zts-20131226 文件夹,它与phpinfo() 中显示的值不同。我所做的是克隆这个文件夹并将名称更改为 phpinfo() 的值。也许你可以修改 php.ini 文件,但我不想这样做。

      我看到你解决了你的问题,但我的问题不同,所以我发布这个答案是为了帮助未来的谷歌人寻找类似的问题。

      希望这会有所帮助。

      【讨论】:

        【解决方案7】:

        在搜索并尝试了很多事情之后,我终于设法解决了我的问题。上面给出的答案 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'
        

        【讨论】:

        • 这里同样是隐藏的,可以通过 cli 看到。但是当我添加 unix_socket 时我仍然没有连接。
        猜你喜欢
        • 2019-11-16
        • 2014-02-20
        • 2011-08-05
        • 2019-03-26
        • 2011-08-12
        • 2015-02-07
        • 2017-05-04
        • 2022-11-29
        • 2011-06-22
        相关资源
        最近更新 更多