Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CakePhp 3.0:PDO问题_Php_Mysql_Cakephp_Pdo - Fatal编程技术网

CakePhp 3.0:PDO问题

CakePhp 3.0:PDO问题,php,mysql,cakephp,pdo,Php,Mysql,Cakephp,Pdo,我目前正在使用CakePHP 3.0,在连接数据库时遇到问题 恢复: 您的PHP版本为5.4.16或更高版本 您的PHP版本已加载mbstring扩展名 您的PHP版本已加载openssl扩展 您的PHP版本已加载intl扩展 然后: 您的tmp目录是可写的 您的日志目录是可写的 文件引擎正用于核心缓存。要更改配置,请执行以下操作: 编辑config/app.php 但是: CakePHP无法连接到数据库 无法建立到数据库的连接:SQLSTATE[HY000] [2006]MySQL服务器已经消

我目前正在使用CakePHP 3.0,在连接数据库时遇到问题

恢复:

您的PHP版本为5.4.16或更高版本

您的PHP版本已加载mbstring扩展名

您的PHP版本已加载openssl扩展

您的PHP版本已加载intl扩展

然后:

您的tmp目录是可写的

您的日志目录是可写的

文件引擎正用于核心缓存。要更改配置,请执行以下操作: 编辑config/app.php

但是:

CakePHP无法连接到数据库

无法建立到数据库的连接:SQLSTATE[HY000] [2006]MySQL服务器已经消失

我得到的警告是:

警告(2):PDO::_construct():MySQL服务器已离开 [CORE\src\Database\Driver\PDODriverTrait.php,第48行]警告(2): PDO::_构造()[PDO.construct]:读取问候语时出错 小包裹PID=25748[CORE\src\Database\Driver\PDODriverTrait.php,第行 48]

第48行的PDODriverTrait.php是:

protected function _connect($dsn, array $config)
{
    $connection = new PDO(
        $dsn,
        $config['username'],
        $config['password'],
        $config['flags']
    );
    $this->connection($connection);
    return true;
}
我的app.php数据源是:

 'className' => 'Cake\Database\Connection',
    'driver' => 'Cake\Database\Driver\Mysql',
    'persistent' => false,
    'host' => 'localhost',
    'port' => '81',
    'username' => 'root',
    'password' => '',
    'database' => 'projetatelier',
    'encoding' => 'utf8',
    'timezone' => 'UTC',
    'cacheMetadata' => true,
    'quoteIdentifiers' => false,
我检查了我的PDO扩展,一切似乎都是正确的


谢谢

根据您显示的代码,问题是:-

  • 您的MySQL正在其他端口上工作,所以只需在app.php中输入该端口号即可

  • 或者端口号需要从app.php文件中删除


  • 首先尝试删除它,然后重试。如果不工作,则检查哪个端口MySQL正在工作,然后将此值放入端口而不是80。

    尝试删除端口部分并检查。还有什么是$config['flags']?Marien也请投票表决答案。