【发布时间】:2016-07-11 17:39:40
【问题描述】:
昨天在编码的时候,突然出现以下错误消息:
警告: PDO::__construct():不支持连接到 3.22、3.23 和 4.0。服务器是 3.23.58-登录 /classes/DB.php 第 18 行 SQLSTATE[HY000] [2054] 不支持连接到 3.22、3.23 和 4.0 服务器
我的 DB.php 的第 18 行:
$this->_pdo = new PDO(
'mysql:host='.config::get('mysql/host').
';dbname='.config::get('mysql/db'),
config::get('mysql/username'),
config::get('mysql/password')
);
所以基本上 - 如果我做对了 - 警告是说我的 mysql 数据库已过时。根本没有意义,因为它以前与 PDO 一起使用,而且我没有更改 DB.php 或 Init.php 中的任何内容。
- 服务器版本: 4.1.22-log
- MySQL-客户端版本: 5.1.61
- phpMyAdmin: 2.11.11.3
- php-版本: 5.6.12
另外,我检查了 domainfactory,它清楚地显示我的 php 版本是 5.6.12 而我的 MySQL 版本是 5.1.16
所以我觉得我的虚拟主机有问题,但我决定先在这里问。我的设置有什么问题吗?
【问题讨论】:
-
那么你的mysql服务器版本到底是什么? 4.1.22-log 还是 5.1.16?
-
有什么理由不升级你的 MySQL 服务器吗?您运行的版本非常旧,并且存在大量漏洞。
-
我不是 100% 确定 @YourCommonSense 我从我的 phpmyadmin 仪表板复制了这个。但我相信它在 domainfactory 中说的是 5.1.61。
-
我自己在 domainFactory 托管,他们为我提供了三个不同的 MySQL 版本,具体取决于我连接的主机名: MySQL 3.23.58 (host
mysql.<mydomain>); 4.1.22(主机mysql4.<mydomain>)和5.6.19(主机mysql5.<mydomain>)。我是从客户的 Web 界面获得的(不确定它的英文名称,在德国是 "Kundenmenue")。你确定你有 MySQL 5.1 吗?也许您只是使用了错误的主机名。 -
我给他们打了电话,他们说他们会修好它,所以他们照做了。他们没有告诉我到底出了什么问题,但我猜这与同一天的短暂停机时间有关。