VB.NET连接MariaDB报Incorrect String Value错误,配置UTF8MB4仍未解决
MariaDB UTF8MB4插入报错解决方案
问题根源
错误里的 \xB2 是单字节扩展ASCII字符(比如上标"²"),你使用的MySQL ODBC 8.0 ANSI Driver会默认用系统本地编码(如GBK、CP1252)传递数据,即便连接字符串指定CHARSET=UTF8MB4,也会因为编码不匹配导致插入失败。
修复步骤
1. 替换为Unicode版ODBC驱动
将驱动换成{MySQL ODBC 8.0 Unicode Driver},这个版本会统一用UTF-8处理字符串,避免编码转换冲突。修改后的连接字符串:
Dim s As String = "Driver={MySQL ODBC 8.0 Unicode Driver};Server=" & _server & ";Database=itis;User=itams;Password=P@ssw0rd.;CHARSET=UTF8MB4"
2. 确认全链路字符集配置
- 检查数据库字符集:
确保输出包含SHOW CREATE DATABASE itis;CHARSET=utf8mb4。 - 检查表和目标字段:
确认SHOW CREATE TABLE mrfmon_tbl; SHOW FULL COLUMNS FROM mrfmon_tbl LIKE 'short_description';short_description字段的字符集为utf8mb4,排序规则为utf8mb4_unicode_ci或utf8mb4_general_ci。
3. 强制会话级字符集(可选)
如果换驱动后仍有问题,可通过两种方式强制会话编码:
- 连接字符串方式:
Dim s As String = "Driver={MySQL ODBC 8.0 Unicode Driver};Server=" & _server & ";Database=itis;User=itams;Password=P@ssw0rd.;CHARSET=UTF8MB4;OPTION=3" - SQL语句方式:连接成功后立即执行
SET NAMES utf8mb4;
4. 检查应用端字符串编码
确保VB.NET程序中传递的字符串没有被错误转换编码,避免手动对字符串做非UTF-8的编码处理。
内容的提问来源于stack exchange,提问作者user1687496
相关产品推荐
相关产品推荐

