PHP8+PDO插入MySQL8含重音字符报错,utf8mb4配置无效求助
MySQL插入含重音字符数据报错排查求助
我尝试使用如下DSN配置向MySQL的manufacturers表插入数据:
mysql:host=localhost;dbname=administration;charset=utf8mb4;collation=utf8mb4_0900_ai_ci;port=3306
但出现报错:
SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xE9 Panh...' for column 'CEO' at row 1
CEO字段的待插入值为:René Panhard, Émile Levassor, and Belgian lawyer Edouard Sarazin
若将其中的重音字符替换为普通"e",插入操作即可正常完成。
查阅资料得知这类报错通常与排序规则相关,但我检查后发现所有相关变量配置均保持一致。已尝试执行SET NAMES语句、修改连接DSN、重建表等操作,问题仍未解决。当前使用环境为PHP 8 + MySQL 8,网上现有同类解决方案多针对旧版本,无法直接适用。
以下是插入操作时的相关配置信息:
数据库排序规则
administration utf8mb4 utf8mb4_0900_ai_ci
会话字符集核心变量
character_set_client utf8mb4 character_set_connection utf8mb4 character_set_results utf8mb4 collation_connection utf8mb4_0900_ai_ci
会话排序规则变量
collation_connection utf8mb4_0900_ai_ci collation_database utf8mb4_0900_ai_ci collation_server utf8mb4_0900_ai_ci
完整会话字符集配置
character_set_client utf8mb4 character_set_connection utf8mb4 character_set_database utf8mb4 character_set_filesystem binary character_set_results utf8mb4 character_set_server utf8mb4 character_set_system utf8mb3 character_sets_dir C:\Program Files\MySQL\MySQL Server 8.0\share\charsets\
表及字段配置
manufacturer表排序规则
manufacturer utf8mb4_0900_ai_ci
表字段字符集/排序规则
manufacturer address1 utf8mb4_0900_ai_ci manufacturer address2 utf8mb4_0900_ai_ci manufacturer CEO utf8mb4_0900_ai_ci manufacturer city utf8mb4_0900_ai_ci manufacturer country utf8mb4_0900_ai_ci manufacturer dateadded manufacturer emailaddress utf8mb4_0900_ai_ci manufacturer endyear utf8mb4_0900_ai_ci manufacturer lastupdated manufacturer Lastupdatedby utf8mb4_0900_ai_ci manufacturer mfrid manufacturer modelyr utf8mb4_0900_ai_ci manufacturer name utf8mb4_0900_ai_ci manufacturer phone utf8mb4_0900_ai_ci manufacturer postalcd utf8mb4_0900_ai_ci manufacturer stateorprovince utf8mb4_0900_ai_ci manufacturer wwwaddress utf8mb4_0900_ai_ci
请求协助排查并解决该插入报错问题。
内容的提问来源于stack exchange,提问作者Al G
相关产品推荐
相关产品推荐

