【问题标题】:SQLSTATE HY000 2002 while running bake commandSQLSTATE HY000 2002 运行烘焙命令时
【发布时间】:2015-09-05 15:14:48
【问题描述】:

我在运行烘焙命令时遇到问题。我认为它与 mysql 有关,但我没有在 Stackoverflow 上找到任何解决此错误的方法。 这是我的app.php

'Datasources' => [
        'default' => [
            'className' => 'Cake\Database\Connection',
            'driver' => 'Cake\Database\Driver\Mysql',
            'persistent' => false,
            'host' => 'localhost',

            //'port' => 'nonstandard_port_number',
            'username' => 'root',
            'password' => 'root',
            'database' => 'laboiterose',
            'encoding' => 'utf8',
            'timezone' => 'UTC',
            'cacheMetadata' => true,

请帮忙,我得到的错误是:

Exception: SQLSTATE[HY000] [2002] No such file or directory in [/Applications/MAMP/htdocs/my_db/vendor/cakephp/cakephp/src/Database/Driver/PDODriverTrait.php, line 48]
2015-06-19 14:35:48 Error: [PDOException] SQLSTATE[HY000] [2002] No such file or directory
Stack Trace:
0 /Applications/MAMP/htdocs/my_db/vendor/cakephp/cakephp/src/Database/Driver/PDODriverTrait.php(48): PDO->__construct('mysql:host=loca...', 'root', 'root', Array)
1 /Applications/MAMP/htdocs/my_db/vendor/cakephp/cakephp/src/Database/Driver/Mysql.php(89): Cake\Database\Driver\Mysql->_connect('mysql:host=loca...', Array)
2 /Applications/MAMP/htdocs/my_db/vendor/cakephp/cakephp/src/Database/Schema/BaseSchema.php(46): Cake\Database\Driver\Mysql->connect()
3 /Applications/MAMP/htdocs/my_db/vendor/cakephp/cakephp/src/Database/Dialect/MysqlDialectTrait.php(62): Cake\Database\Schema\BaseSchema->__construct(Object(Cake\Database\Driver\Mysql))
4 /Applications/MAMP/htdocs/my_db/vendor/cakephp/cakephp/src/Database/Schema/Collection.php(52): Cake\Database\Driver\Mysql->schemaDialect()
5 /Applications/MAMP/htdocs/my_db/vendor/cakephp/cakephp/src/Database/Schema/CachedCollection.php(44): Cake\Database\Schema\Collection->__construct(Object(Cake\Database\Connection))
6 /Applications/MAMP/htdocs/my_db/vendor/cakephp/cakephp/src/Database/Connection.php(319): Cake\Database\Schema\CachedCollection->__construct(Object(Cake\Database\Connection), true)
7 /Applications/MAMP/htdocs/my_db/vendor/cakephp/bake/src/Shell/Task/ModelTask.php(806): Cake\Database\Connection->schemaCollection()
8 /Applications/MAMP/htdocs/my_db/vendor/cakephp/bake/src/Shell/Task/ModelTask.php(782): Bake\Shell\Task\ModelTask->_getAllTables()
9 /Applications/MAMP/htdocs/my_db/vendor/cakephp/bake/src/Shell/Task/ModelTask.php(186): Bake\Shell\Task\ModelTask->listAll()
10 /Applications/MAMP/htdocs/my_db/vendor/cakephp/bake/src/Shell/Task/ModelTask.php(109): Bake\Shell\Task\ModelTask->getAssociations(Object(Cake\ORM\Table))
11 /Applications/MAMP/htdocs/my_db/vendor/cakephp/bake/src/Shell/Task/ModelTask.php(95): Bake\Shell\Task\ModelTask->bake('Users')
12 /Applications/MAMP/htdocs/my_db/vendor/cakephp/bake/src/Shell/BakeShell.php(241): Bake\Shell\Task\ModelTask->main('Users')
13 [internal function]: Bake\Shell\BakeShell->all('users')
14 /Applications/MAMP/htdocs/my_db/vendor/cakephp/cakephp/src/Console/Shell.php(380): call_user_func_array(Array, Array)
15 /Applications/MAMP/htdocs/my_db/vendor/cakephp/cakephp/src/Console/ShellDispatcher.php(204): Cake\Console\Shell->runCommand(Array, true)
16 /Applications/MAMP/htdocs/my_db/vendor/cakephp/cakephp/src/Console/ShellDispatcher.php(175): Cake\Console\ShellDispatcher->_dispatch()
17 /Applications/MAMP/htdocs/my_db/vendor/cakephp/cakephp/src/Console/ShellDispatcher.php(126): Cake\Console\ShellDispatcher->dispatch()
18 /Applications/MAMP/htdocs/my_db/bin/cake.php(33): Cake\Console\ShellDispatcher::run(Array)
19 {main}

【问题讨论】:

标签: cakephp-3.0


【解决方案1】:

可以测试一下

 'default' => [
        'className' => 'Cake\Database\Connection',

        'driver' => 'Cake\Database\Driver\Mysql',

        'persistent' => false,

        'host' => 'localhost',

        'username' => 'root',

        'password' => '',

        'database' => 'laboiterose',

        'encoding' => 'utf8',

        'timezone' => 'UTC',

        'cacheMetadata' => true,

        'quoteIdentifiers' => false,

   ],

【讨论】:

    【解决方案2】:

    问题解决了!! 我唯一应该添加的是 .bash_profile 中的这一行以使其工作:

    export PATH=/Applications/MAMP/bin/php/php5.6.10/bin:$PATH
    

    【讨论】:

    • 你能解释一下为什么它会起作用,因为它对我有用。 (人们也应该在之后重新启动终端)
    • @liquified 它将路径从 MAC OS X 预安装的默认 PHP 安装更改为通向您的 MAMP PHP 安装的路径。
    【解决方案3】:

    首先,让我们找出我们正在运行的 PHP 版本(看看它是否是默认版本)。

    为此,在终端中,触发以下命令:

    which php
    

    这应该输出 Mac OS X 预安装的默认 PHP 安装的路径,默认情况下它必须是(假设您之前没有更改过它):

    /usr/bin/php
    

    现在,我们只需要把它换成安装了 MAMP 的 PHP,它位于 /Applications/MAMP/bin/php/php7.0.0/bin (MAMP 3.5)

    为此,我们需要编辑 .bash_profile 并将 PHP 的 MAMP 版本添加到 PATH 变量中。 遵循这些简单的步骤:

    在终端中,运行vim ~/.bash_profile

    键入i,然后将以下内容粘贴到文件顶部:

    export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH
    

    按 ESC,输入 :wq,然后按 Enter

    在终端中,运行source ~/.bash_profile

    在终端中,再次输入which php 并查找更新后的字符串。如果一切成功,它应该输出 MAMP PHP 安装的新路径。

    如果它没有输出正确的路径,请尝试关闭终端窗口(完全退出)并再次打开,它应该会应用更改(简称重启)。

    【讨论】:

    • 这是正确答案。它适用于 macOS Mojave 上的 MAMP 5.2 和 CakePHP 3.7.3。
    【解决方案4】:

    我认为这是最好的方法:

    'unix_socket'   => '/Applications/MAMP/tmp/mysql/mysql.sock',
    

    将此添加到您的数据库配置中

    【讨论】:

    • 对于 xampp,字符串将类似于 'unix_socket' => '/opt/lampp/var/mysql/mysql.sock',
    【解决方案5】:

    我是初学者,在 CakePHP 教程中遇到了这个问题,在 MAC 上使用 MAMP。

    首先我用这个命令在我的 MAMP 中找到了 php:

    find /Applications/mampstack-7.1.21-0/ -type f -name php
    

    这应该会输出您的目录...。就我而言,这是:
    /Applications/mampstack-7.1.21-0//php/bin/php

    然后我找到.bash_profile并用这个命令打开它:

    touch ~/.bash_profile; open ~/.bash_profile
    

    它将使用 TextEdit 打开它。然后在这个文件中,我编辑了第一个命令得到的路径,并用 sbin 删除了额外的路径:

    export PATH="/Applications/mampstack-7.1.21-0/php/bin/:$PATH"
    

    在终端命令中:

    grep php ~/.bash_profile
    

    然后我关闭了所有终端,然后,它对我有用。

    非常感谢您的第一条评论,这对获得此解决方案很有帮助。

    【讨论】:

      【解决方案6】:

      'host' => 'localhost', 更改为'host' => '127.0.0.1', 为我解决异常问题。

       'Datasources' => [
              'default' => [
                  'className' => 'Cake\Database\Connection',
                  'driver' => 'Cake\Database\Driver\Mysql',
                  'persistent' => false,
                  'host' => '127.0.0.1',
      

      我在 Ampps 上运行。

      【讨论】:

        猜你喜欢
        • 2019-04-13
        • 1970-01-01
        • 2017-09-10
        • 1970-01-01
        • 2021-12-20
        • 1970-01-01
        • 2019-11-29
        • 2018-10-20
        • 2021-11-24
        相关资源
        最近更新 更多