建立MySQL数据库连接的WordPress错误IIS10 [重复]

问题描述 投票:9回答:2

我正在尝试在我的本地Windows 10机器上使用MySQL设置WordPress。我收到这个错误:

建立数据库连接时出错这可能意味着wp-config.php文件中的用户名和密码信息不正确,或者我们无法联系localhost:3307上的数据库服务器。这可能意味着主机的数据库服务器已关闭。

我已经在这里查了一下:Error establishing a database connection on wordpress

  1. 您确定拥有正确的用户名和密码吗? 是的,我可以使用root凭据登录SQL Server Workbench,这样就可以了
  2. 您确定已键入正确的主机名吗? 这就是我在下面尝试的
  3. 您确定数据库服务器正在运行吗? 是的,在MySQL工作台中检查并且它正在运行

我运行了这个查询select @@hostname,它给了我:DESKTOP-CFT2ESY

我尝试添加到wp-config.php(不是所有的同时):

define('DB_HOST', 'localhost:3307'); define('DB_HOST', 'localhost:8899'); define('DB_HOST', 'localhost'); define('DB_HOST', 'DESKTOP-CFT2ESY'); define('DB_HOST', '127.0.0.1');

这些都不起作用,只是更改了上面错误消息中的主机名字符串。

然后我补充说: define('WP_ALLOW_REPAIR', true); define('DB_CHARSET', 'utf8');

但这根本不会改变错误信息。

更新1

我运行了SHOW GLOBAL VARIABLES LIKE 'PORT';,我的服务器在端口3306上运行。在WorkBench中,我看到我的数据库已启动并运行。我还在我的数据库模式中添加了用户root的所有权限。我的用户的Limit to hosts matching设置为localhost

更新2

然后我运行了这个PHP代码,我找到了here(我只是将root用户的密码更改为root用户的密码):

<?php

$host="localhost"; 

$root="root"; 
$root_password="rootpass"; 

$user='newuser';
$pass='newpass';
$db="newdb"; 

    try {
        $dbh = new PDO("mysql:host=$host", $root, $root_password);

        $dbh->exec("CREATE DATABASE `$db`;
                CREATE USER '$user'@'localhost' IDENTIFIED BY '$pass';
                GRANT ALL ON `$db`.* TO '$user'@'localhost';
                FLUSH PRIVILEGES;") 
        or die(print_r($dbh->errorInfo(), true));

    } catch (PDOException $e) {
        die("DB ERROR: ". $e->getMessage());
    }
?>

但这会引发错误:

DB错误:SQLSTATE [HY000] [2054]服务器向客户端发送未知的charset。请向开发人员报告

更新3

然后我运行查询:SELECT default_character_set_name FROM information_schema.SCHEMATA S WHERE schema_name = "myDB";返回utf8,所以我的wp-config.php中定义的字符集相同。

更新4 我检查了here。我刚刚在我的mysqlrouter.conf.sample文件夹中有一个C:\Program Files\MySQL\MySQL Server 8.0\etc,所以我添加了一个my.cnf文件:

[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8

我重新启动了MySQL Windows服务,但错误仍然相同。

我还能尝试什么?

php mysql wordpress iis-10 mysql-8.0
2个回答
4
投票

正如@treyBake评论,请参阅here

基本上MySQL 8将默认字符集更改为utfmb4,现在有些客户端出现错误。我降级到MySQL Server 5.6,问题就消失了。


1
投票

在这里寻找潜在的解决方案:

PDO::__construct(): Server sent charset (255) unknown to the client. Please, report to the developers

实质上,您必须确保DB和脚本使用相同的字符集,最好是utf-8

更新:另见:http://php.net/manual/en/mysqli.set-charset.php

© www.soinside.com 2019 - 2024. All rights reserved.