CakePhp 3.0:PDO 问题

Posted

技术标签:

【中文标题】CakePhp 3.0:PDO 问题【英文标题】:CakePhp 3.0 : PDO issues 【发布时间】:2015-06-08 10:15:20 【问题描述】:

我目前正在使用 Cakephp 3.0,在连接到我的数据库时遇到了问题。

继续:

您的 PHP 版本是 5.4.16 或更高版本。

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

您的 PHP 版本已加载 openssl 扩展。

您的 PHP 版本已加载 intl 扩展。

然后:

您的 tmp 目录是可写的。

您的日志目录是可写的。

FileEngine 用于核心缓存。更改配置 编辑 config/app.php

但是:

CakePHP 无法连接到数据库。

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

我的警告是:

警告 (2): PDO::__construct(): MySQL server has gone away [CORE\src\Database\Driver\PDODriverTrait.php,第 48 行] 警告 (2): PDO::__construct() [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 扩展,一切似乎都是正确的。

谢谢

【问题讨论】:

尝试移除端口部分并检查。还有什么是 $config['flags']? Marien 也请为答案投票。 【参考方案1】:

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

    您的 MySQL 正在使用其他端口,因此只需将该端口号放在您的 app.php 中即可。

    或者端口号需要从文件app.php中去掉。

首先尝试删除它并尝试。如果不工作,则检查 MySQL 工作的端口,然后将此值放入端口而不是 80。

【讨论】:

以上是关于CakePhp 3.0:PDO 问题的主要内容,如果未能解决你的问题,请参考以下文章

CakePhp : Cake bake 在 Ubuntu 上不起作用。 (PDO异常)

Cakephp 3.0 教程很难[关闭]

cakephp 3.0 - 保存独特的关联

在 CakePHP 中无法使用 MySQL

CakePHP 3.0 连接数据库失败

如何在 CakePHP 3.0 中复制 Query::notMatching()?