CakePHP Bake SQLSTATE[HY000] [2002]找不到文件或目录。

5
我按照CakePHP教程做,到目前为止一切正常(新添加的文章在数据库中显示)。但是当我尝试运行"bin/cake bake model users"时,出现以下错误信息: "SQLSTATE[HY000] [2002] No such file or directory in [/opt/lampp/htdocs/MyApp/vendor/cakephp/cakephp/src/Database/Driver.php, line 92]"。我在这里找到了解决方案:SQLSTATE HY000 2002 while running bake command。但是,在Linux(Ubuntu)上似乎不起作用。任何帮助将不胜感激。
完整错误信息:
Exception: SQLSTATE[HY000] [2002] No such file or directory in [/opt/lampp/htdocs/MyApp/vendor/cakephp/cakephp/src/Database/Driver.php, line 92] 2018-12-06 11:28:03 Error: [PDOException] SQLSTATE[HY000] [2002] No such file or directory in /opt/lampp/htdocs/MyApp/vendor/cakephp/cakephp/src/Database/Driver.php on line 92 Stack Trace:
#0 /opt/lampp/htdocs/MyApp/vendor/cakephp/cakephp/src/Database/Driver.php(92): PDO->__construct('mysql:host=loca...', 'root', '', Array)
#1 /opt/lampp/htdocs/MyApp/vendor/cakephp/cakephp/src/Database/Driver/Mysql.php(106): Cake\Database\Driver->_connect('mysql:host=loca...', Array)
#2 /opt/lampp/htdocs/MyApp/vendor/cakephp/cakephp/src/Database/Schema/BaseSchema.php(45): Cake\Database\Driver\Mysql->connect()
#3 /opt/lampp/htdocs/MyApp/vendor/cakephp/cakephp/src/Database/Dialect/MysqlDialectTrait.php(63): Cake\Database\Schema\BaseSchema->__construct(Object(Cake\Database\Driver\Mysql))
#4 /opt/lampp/htdocs/MyApp/vendor/cakephp/cakephp/src/Database/Schema/Collection.php(52): Cake\Database\Driver\Mysql->schemaDialect()
#5 /opt/lampp/htdocs/MyApp/vendor/cakephp/cakephp/src/Database/Schema/CachedCollection.php(42): Cake\Database\Schema\Collection->__construct(Object(Cake\Database\Connection))
#6 /opt/lampp/htdocs/MyApp/vendor/cakephp/cakephp/src/Database/Connection.php(391): Cake\Database\Schema\CachedCollection->__construct(Object(Cake\Database\Connection), true)
#7 /opt/lampp/htdocs/MyApp/vendor/cakephp/bake/src/Shell/Task/ModelTask.php(1052): Cake\Database\Connection->getSchemaCollection()
#8 /opt/lampp/htdocs/MyApp/vendor/cakephp/bake/src/Shell/Task/ModelTask.php(1006): Bake\Shell\Task\ModelTask->_getAllTables()
#9 /opt/lampp/htdocs/MyApp/vendor/cakephp/bake/src/Shell/Task/ModelTask.php(213): Bake\Shell\Task\ModelTask->listAll()
#10 /opt/lampp/htdocs/MyApp/vendor/cakephp/bake/src/Shell/Task/ModelTask.php(131): Bake\Shell\Task\ModelTask->getAssociations(Object(Cake\ORM\Table))
#11 /opt/lampp/htdocs/MyApp/vendor/cakephp/bake/src/Shell/Task/ModelTask.php(114): Bake\Shell\Task\ModelTask->getTableContext(Object(Cake\ORM\Table), 'users', 'Users')
#12 /opt/lampp/htdocs/MyApp/vendor/cakephp/bake/src/Shell/Task/ModelTask.php(101): Bake\Shell\Task\ModelTask->bake('Users')
#13 /opt/lampp/htdocs/MyApp/vendor/cakephp/cakephp/src/Console/Shell.php(532): Bake\Shell\Task\ModelTask->main('users')
#14 /opt/lampp/htdocs/MyApp/vendor/cakephp/cakephp/src/Console/Shell.php(525): Cake\Console\Shell->runCommand(Array, false, Array)
#15 /opt/lampp/htdocs/MyApp/vendor/cakephp/cakephp/src/Console/CommandRunner.php(342): Cake\Console\Shell->runCommand(Array, true)
#16 /opt/lampp/htdocs/MyApp/vendor/cakephp/cakephp/src/Console/CommandRunner.php(164): Cake\Console\CommandRunner->runShell(Object(Bake\Shell\BakeShell), Array)
#17 /opt/lampp/htdocs/MyApp/bin/cake.php(12): Cake\Console\CommandRunner->run(

数组

18 {主要}


1
你是否使用Composer安装过CakePHP? - Sehdev
似乎如果您删除vendor目录并执行composer install,问题将得到解决。 - Peshraw H. Ahmed
我刚遇到了类似的问题,使用的是Linux上的Xampp栈和CakePHP 3.8。原因是错误的PHP版本(我的系统范围内安装在/usr/bin/php下)。解决方法是将路径/opt/lampp/bin添加到我的PATH中,一切正常 :) - John
3个回答

10

在我的情况下,问题通过更改 app/config.php 中的数据源主机(从 "localhost" 改为 "127.0.0.1")来解决。

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

1

请按照以下步骤操作:

  1. 检查你的cake-php是否已连接到本地数据库,可通过浏览器访问pagesController页面查看是否已连接。如果未连接,需在config/app.php中配置数据库名称和凭据。
  2. 确保你位于cake-php项目目录下,若在Windows系统中,请尝试运行"bin\cake bake model users"命令,在Linux系统中,请使用"bin/cake bake model users"命令。

若问题未解决,请回复此帖。


-1

尝试将数据源主机从localhost更改为127.0.0.1


这实际上是在复制现有答案。如果答案中有遗漏的内容,请提出编辑建议,否则请使用投票/评论来表示您同意或它对您有帮助 :)。 - AD7six

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接