MySQL报错: ERROR 1366 和 1406 解决办法

1.错误背景

设计MySQL数据时设置数据编码 charset=utf8,插入数据全为英文时没有任何报错,查询、创建函数、视图都正常,当插入含中文字符数据时就会报错,一次报2个错:
报错 1:

ERROR 1366 (HY000): Incorrect string value: ‘\xA4\x95’ for column ‘name’ at row 1

报错 2:

ERROR 1406 (22001): Data too long for column ‘name’ at row 1

插入语法、格式都反复检测过,没有问题,字符串设置长度也足够长。

2.排查错误

通过:status 查看数据库状态,如下图:
在这里插入图片描述
发现他们4者的字符编码格式不一样:

Server characterset: utf8mb4
Db characterset: utf8
Client characterset: gbk
Conn. characterset: gbk

3.解决办法

3.1 方法一:

将Client和Connection的字符编码格式改成了:utf8

mysql> set character_
### 解析 Qt6 连接 MySQL 遇到的链接错误 当尝试使用 Qt6 构建应用程序并连接至 MySQL 数据库时,可能会遇到 `collect2.exe: error: ld returned 1 exit status` 的错误消息[^1]。此错误表明链接器未能成功完成其工作,通常是因为缺少必要的库文件或配置不正确。 #### 可能原因分析 - **未正确设置环境变量**:如果 MinGW 或其他编译工具链的相关路径不在系统的 PATH 环境变量中,则可能导致链接失败。 - **缺失依赖项**:构建过程中可能因为某些必需的静态或动态库不存在而导致链接阶段出现问题。对于 MySQL 插件而言,这可能是由于没有安装相应的开发包所致[^5]。 - **版本兼容性问题**:不同版本间的二进制接口变化也可能引发此类问题;例如,较新的 Qt 版本与旧版数据库驱动之间可能存在不匹配的情况。 #### 解决方案建议 为了有效处理上述提到的问题: - 安装完整的 MySQL 开发套件,确保包含了所有头文件以及 .lib 文件(用于 Windows 平台)。可以通过官方渠道下载适合操作系统的 MySQL Connector/C++ 软件包来获取这些资源。 - 修改项目 `.pro` 文件中的 LIBS INCLUDEPATH 参数,使其指向正确的 MySQL 库位置包含目录。例如,在 Windows 下可以这样指定: ```makefile win32 { MYSQL_DIR = C:/Program Files/MySQL/mysql-connector-cpp-x.x.x/ INCLUDEPATH += $$MYSQL_DIR/include LIBS += -L$$MYSQL_DIR/lib/opt -llibmysql } ``` - 如果仍然存在无法解析符号等问题,考虑调整 QMAKE_LFLAGS 或者 LDFLAGS 来控制链接行为,比如增加 `-static-libgcc` 标志以强制静态链接 GCC runtime libraries[^3]。 - 对于 Linux 用户来说,除了确认已通过包管理器安装好 libmysqlclient-dev 外,还需要编辑 `/etc/ld.so.conf.d/mysql-i386.conf` 添加 MySQL client library 所在路径,并运行命令更新共享库缓存(`sudo ldconfig`)。 最后提醒开发者仔细阅读每次构建过程产生的日志信息,定位具体哪一部分出现了异常,从而更有针对性地采取措施加以修复。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值