如何将遗留PHP应用程序连接到MySQL v8?
我有一个遗留的PHP论坛,我想以只读的方式进行归档。我已经使用PHP5.4在docker容器中运行了它,并且我已经将它连接到了MySQL 5容器 当我切换到使用MySQL 8时,它无法连接,原因有两个:如何将遗留PHP应用程序连接到MySQL v8?,php,mysql,legacy,mysql-8.0,php-5.4,Php,Mysql,Legacy,Mysql 8.0,Php 5.4,我有一个遗留的PHP论坛,我想以只读的方式进行归档。我已经使用PHP5.4在docker容器中运行了它,并且我已经将它连接到了MySQL 5容器 当我切换到使用MySQL 8时,它无法连接,原因有两个: MySQL 8将默认身份验证协议从MySQL_native_password切换到caching_sha2_password,php的MySQL驱动程序不支持后者。我通过创建一个使用mysql_native_密码身份验证机制的用户来修复这个问题 MySQL 8将默认服务器的字符集从utf8切换
Warning: mysql_connect(): Server sent charset (255) unknown to the client.
我知道我可以通过更改MySQL服务器的字符集来修复它,但我正在生产中的托管MySQL集群中运行它(来自Digital Ocean),我无法更改它。因此,我想知道是否可以在数据库级别或客户机/连接级别对其进行更改
在导入数据之前,我尝试使用以下方法更改数据库的编码:
ALTER数据库
数据库名称
字符集=utf8
COLLATE=utf8\U unicode\U ci;
我还尝试使用以下方法更改PHP中的连接字符集:
$this->db\u connect\u id=mysql\u connect($this->server,$this->user,$this->password);
mysql\u set\u字符集(“UTF8”,$this->db\u connect\u id);
但是“Server sent charset unknown”错误在mysql\u connect
行上,因此当mysql\u set\u charset
运行时,错误已经抛出,db\u connect\u id
为false
我也知道我可以升级PHP,从传统的mysql扩展切换到mysqli或PDO,但这个论坛是从2005年开始的,我从来没有打算使用它;这只是为了存档。我希望它能在不升级的情况下正常工作
有什么建议吗?PHP5.4多年来一直不受支持。。。您不仅应该升级它以获得更好的性能,还应该升级它以修复所有与安全相关的bug Hanks Nico,但避免此问题的唯一方法是升级到PHP 7,它不支持mysql扩展(仅支持mysqli或PDO)。这需要我深入研究phpbb和smf论坛的代码库。我不需要良好的性能或安全修复,因为我计划将此设置为只读。如果不想运行升级,请继续使用MySQL 5;)OP在第一行提到了“出于存档目的的只读”。因此,他们不鼓励任何人注册。即使是现有的帐户也可能面临风险,所以我们希望他们也能删除所有敏感的用户数据。