wordpress建立mysql数据库连接时出错iis10

4uqofj5v  于 2021-06-17  发布在  Mysql
关注(0)|答案(2)|浏览(772)

这个问题在这里已经有答案了

pdo::uuu construct():服务器发送了客户端未知的字符集(255)。请向开发者报告(10个答案)
wordpress无法连接到mysql服务器(10个答案)
去年关门了。
我正在本地的windows10机器上用mysql安装wordpress。我得到这个错误:
建立数据库连接时出错这可能意味着wp-config.php文件中的用户名和密码信息不正确,或者我们无法联系上的数据库服务器localhost:3307. 这可能意味着您主机的数据库服务器已关闭。
我已经检查过了:在wordpress上建立数据库连接时出错
你确定你有正确的用户名和密码吗?
是的,我可以使用 root 证书,所以这是有效的
您确定键入了正确的主机名吗?
这就是我下面要尝试的
您确定数据库服务器正在运行吗?
是的,已经签入mysql workbench并且它正在运行
我运行了这个查询 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代码(我刚刚将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());
    }
?>

但这带来了一个错误:
数据库错误:sqlstate[hy000][2054]服务器向客户端发送了未知字符集。请向开发商汇报
更新3
然后我运行查询: SELECT default_character_set_name FROM information_schema.SCHEMATA S WHERE schema_name = "myDB"; 它回来了 utf8 ,因此与我的 wp-config.php .
更新4
我查过了。我刚喝了一杯 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服务,但错误仍然是一样的。
我还能试什么?

iq0todco

iq0todco1#

在这里寻找潜在的解决方案:
pdo::uuu construct():服务器发送了客户端未知的字符集(255)。请向开发商汇报
本质上,您必须确保db和脚本使用相同的字符集,最好是utf-8
更新:另见this:httphttp://php.net/manual/en/mysqli.set-charset.php

nbnkbykc

nbnkbykc2#

正如@treybake评论的,请看这里。
基本上mysql 8将默认字符集更改为utfmb4,现在一些客户机出现错误。我降级到MySQLServer5.6,问题消失了。

相关问题