我正在尝试修复字符编码问题 - 之前我们为此列utf8_general_ci设置了排序规则,因为它对重音不敏感而导致问题.
我正在尝试查找数据库中可能受到影响的所有条目.
DEFAULT CHARACTER SET utf8
但是,这会产生错误:
CHARSET=utf8
问题:当latin1似乎不存在于表/模式定义的任何地方时,为什么我收到有关latin1的错误?
set names utf8;
select * from table1 t1 join table2 t2 on (t1.pid=t2.pid and t1.id != t2.id) collate utf8_general_ci;
Run Code Online (Sandbox Code Playgroud)
Mih*_*hai 26
首先运行此查询
SHOW VARIABLES LIKE '%char%';
Run Code Online (Sandbox Code Playgroud)
你有 character_set_server='latin1'
如果是这样,请进入您的配置文件my.cnf并添加或取消注释这些行:
character-set-server = utf8
collation-server = utf8_general_ci
Run Code Online (Sandbox Code Playgroud)
重启服务器.是晚会,刚刚遇到同样的问题.
在 MariaDB (10.1.36-MariaDB) 中使用括号和 COLLATE 语句的组合会产生同样的错误。我的 SQL 是不同的,错误是一样的,我有:
SELECT *
FROM table1
WHERE (field = 'STRING') COLLATE utf8_bin;
Run Code Online (Sandbox Code Playgroud)
省略括号是为我解决它。
SELECT *
FROM table1
WHERE field = 'STRING' COLLATE utf8_bin;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
78328 次 |
| 最近记录: |