这个问题在这里已经有答案了:
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服务,但错误仍然是一样的。
我还能试什么?
2条答案
按热度按时间cetgtptt1#
在这里寻找潜在的解决方案:
pdo::uuu construct():服务器发送了客户端未知的字符集(255)。请向开发商汇报
本质上,您必须确保db和脚本使用相同的字符集,最好是utf-8
更新:另见this:httphttp://php.net/manual/en/mysqli.set-charset.php
9rnv2umw2#
正如@treybake评论的,请看这里。
基本上mysql 8将默认字符集更改为utfmb4,现在一些客户机出现错误。我降级到MySQLServer5.6,问题消失了。