我在另一个论坛上发布了这个,认为它与 Ubuntu 相关,MySQL 不能很好地与 PHP 配合使用,但后来我意识到 mysqli 确实在加载并与之通信,因为 phpinfo() 表明 mysqli 正在运行,所以我的问题是似乎与 PHP 7.4 版连接数据库的方式发生了变化有关。
它显然与密码有关,因此即使不向后兼容,也必须对其进行哪些更改才能使其工作?我的本地开发数据库使用一个简单的密码,我不确定我需要做什么才能让它再次工作,同时仍保持与实时服务器上旧 MySQL 5.X 的兼容性,但我的站点使用此功能进行连接。
我确实在这里和其他地方查看了另一个帖子和其他几个帖子,并尝试了上面链接示例中提供的测试代码,但仍然无法连接。
function dbConn($DBname) {
global $DBhost;
global $DBusername;
global $DBpass;
$dbconn = new mysqli($DBhost, $DBusername, $DBpass, $DBname);
mysqli_set_charset($dbconn,"UTF8");
return $dbconn;
}
我正在运行带有 Apache2 2.4.41 和 MySQL 8.0.18 的 Ubuntu 19.10,即使启用了mysql_native_password,它也会出错。
Warning: mysqli::__construct(): Unexpected server response while doing caching_sha2 auth: 109 in /var/www/html/testsite.loc/db_test.php on line 32
Warning: mysqli::__construct(): (HY000/2006): MySQL server has gone away in /var/www/html/testsite.loc/db_test.php on line 32
Warning: mysqli::query(): Couldn't fetch mysqli in /var/www/html/testsite.loc/db_test.php on line 33
Fatal error: Uncaught Error: Call to a member function fetch_row() on bool in /var/www/html/testsite.loc/db_test.php:34 Stack trace: #0 {main} thrown in /var/www/html/testsite.loc/db_test.php on line 34