MySQL (1366, "Incorrect string value: '\\xF0\\x9F\\x8E\\xAC\\xE5\\x89...' for column 'description' a...

本文探讨了当数据库数据集已为utf8mb4格式时,pymysql连接可能出现的问题,并提供了解决方案。对于遇到相似数据库字符集问题的开发者,本文将提供有价值的参考。

如果数据库的数据集已经是utf8mb4了

就是pymysql连接时候出现了问题

转载于:https://www.cnblogs.com/BlueFire-py/p/10797418.html

错误代码 1366Incorrect string value)通常表示在向数据库插入或更新数据时,字符串值的编码与数据库、表或字段的字符集不兼容。以下是一些可以尝试的解决方法: ### 修改数据库的编码方式 使用以下 SQL 语句将数据库的默认字符集修改为 `utf8`(或 `utf8mb4`,如果需要支持更广泛的字符,如表情符号),并设置相应的排序规则: ```sql ALTER DATABASE your_database_name DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; ``` 这里的 `your_database_name` 需要替换为实际的数据库名称。此方法可确保数据库后续创建的表默认使用该字符集 [^3]。 ### 修改表的编码方式 将特定表的编码方式修改为 `utf8` 或 `utf8mb4`: ```sql ALTER TABLE your_table_name DEFAULT CHARACTER SET utf8mb4; ``` 其中 `your_table_name` 是出现问题的表名。这样可以使该表后续插入的数据使用新的字符集 [^3]。 ### 修改字段的编码方式 针对出现问题的字段,将其编码方式修改为 `utf8` 或 `utf8mb4`: ```sql ALTER TABLE your_table_name CHANGE `商品名称` `商品名称` VARCHAR(255) CHARACTER SET utf8mb4 NOT NULL; ``` 这里假设 `商品名称` 字段的类型为 `VARCHAR(255)`,你可以根据实际情况调整字段类型和长度 [^3][^4]。 ### 查看和确认编码格式 可以使用以下 SQL 语句查看数据库、表和字段的编码格式: ```sql -- 查看数据库编码格式 SHOW CREATE DATABASE your_database_name; -- 查看表格编码格式 SHOW CREATE TABLE your_table_name; -- 查看字段编码格式 SHOW FULL COLUMNS FROM your_table_name; ``` 通过这些命令,你可以确认数据库、表和字段当前使用的字符集,从而判断是否需要进行修改 [^2][^4]。 ### 新建数据库或表时指定字符集 如果是新建数据库或表,在创建时就指定字符集为 `utf8mb4`: ```sql -- 新建数据库 CREATE DATABASE your_new_database_name DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- 新建表 CREATE TABLE your_new_table_name ( `商品名称` VARCHAR(255) CHARACTER SET utf8mb4 NOT NULL, -- 其他字段定义 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ``` 这样可以避免后续出现字符集不兼容的问题 [^2]。 ### 修改 MySQL 默认配置 在 MySQL 的配置文件(通常是 `my.cnf` 或 `my.ini`)中添加或修改以下配置: ```plaintext [client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_general_ci ``` 修改后重启 MySQL 服务,使配置生效。这可以确保 MySQL 整体使用 `utf8mb4` 字符集 [^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值