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 问题的主要内容,如果未能解决你的问题,请参考以下文章