如果您try 使用PHP PDO连接到最新版本的MariaDB(11.3.2),您将看到此错误,并且客户端将无法连接:

SQLSTATE[HY000] [2054] Server sent charset (0) unknown to the client. Please, report to the developers

推荐答案

原因:MariaDB发送一个以前未设置的值.虽然这与2004年以来的协议完全一致,但php的MySQL驱动程序仍然像2004年之前一样实现了此值的协议状态,因此将崩溃.

您需要取消设置COLLATION-SERVER和CHARACTER-SET-SERVER,或者在服务器配置中将其设置为兼容值,直到修复它为止.

MariaDB Docker镜像: 只需添加

command: --character-set-server=utf8mb4 --collation-server=utf8mb4_bin

Normal Install:
Just remove the line character-set-collations = utf8mb4=uca1400_ai_ci from /etc/mysql/mariadb.conf.d/50-server.cnf

更多信息:https://github.com/php/php-src/issues/13452

Php相关问答推荐

仅显示特定WooCommerce产品类别的额外产品字段

如何在数据库中添加注册表单中的动态新行?

基于验证动态更改输入字段类(名称密码)&

Woocommerce自定义变体html表仅显示带值的列

在WooCommerce产品档案页面中显示产品销售百分比

将带有值的属性添加到WooCommerce产品,保留现有属性

添加登录:需要app.yaml仍然允许所有拥有Google帐户的人访问

按与WooCommerce管理顺序列表中的特定字符串不匹配的特定元值筛选订单

PHP Laravel Web应用启动时间&>15秒

laravel中获取的数据会自动更改时间戳值

限制某些产品只能在WooCommerce的特定邮政编码/邮政编码范围内发货

拉威尔10有许多通过获取所有祖父母数据的子元素S图像

shell_exec运行大型数据处理

防止在WordPress短代码中显示重复产品并请求代码更正

Shopware 6 插件:如何删除布尔配置并将其迁移到多选配置

woocommerce checkout 页面上的自定义字段

循环中未序列化数组显示的问题

如何使用动态变量定义 bind_result?

Shopware 6:无法在新的自定义插件中保存关联字段(媒体)

Laravel Factory - 在单列中生成具有随机迭代量的假 json 数组数据