查询报错解决Character set 'utf8mb3_general_ci' cannot be used in conjunction with 'binary' in call to regexp_like.不修改字段类型
时间: 2023-12-26 15:06:57 浏览: 98
这个错误通常是因为使用了 MySQL 8.0 版本以上的数据库,而在这个版本中,已经不再支持 `utf8mb3_general_ci` 字符集了,改为了 `utf8mb4_general_ci` 字符集。
如果你不想修改字段类型,可以尝试在查询时强制指定字符集,例如:
```sql
SELECT * FROM table_name WHERE REGEXP_LIKE(column_name, 'pattern', 'utf8mb4_general_ci');
```
或者在连接数据库时设置默认字符集为 `utf8mb4`,例如:
```sql
SET NAMES utf8mb4;
```
这样就可以避免这个错误了。
相关问题
Character set 'utf8mb3_general_ci' cannot be used in conjunction with 'binary' in call to regexp_like.
这个错误是因为在使用 MySQL 的正则表达式函数 `regexp_like` 时,使用了 `binary` 类型的字符集,但是该字符集不支持 `utf8mb3_general_ci`。解决方法是更改字符集类型,可以使用 `utf8mb4_bin` 或其他支持 `binary` 类型的字符集。您可以尝试使用以下代码更改字符集类型:
```
ALTER TABLE your_table MODIFY your_column VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
```
请将 `your_table` 和 `your_column` 替换为您的表名和列名。
CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, 是什么意思
这是 MySQL 数据库中用来定义列的数据类型和排序规则的语句。其中,CHARACTER SET utf8mb3 表示该列使用 UTF-8 编码,mb3 表示每个字符最多占用 3 个字节;COLLATE utf8mb3_general_ci 表示该列使用 UTF-8 编码的一种排序规则(ci 表示不区分大小写)。NOT NULL 表示该列值不能为空。