[MDEV-19239] ERROR 1300 (HY000): Invalid utf8 character string in 10.3.13-MariaDB Created: 2019-04-11 Updated: 2019-04-21 Resolved: 2019-04-21 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | Character Sets |
| Affects Version/s: | 10.3.13 |
| Fix Version/s: | 10.3.15, 10.4.5 |
| Type: | Bug | Priority: | Minor |
| Reporter: | bhzhu203 | Assignee: | Alexander Barkov |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Environment: |
centos6 |
||
| Description |
|
SELECT x.消息ID,x.消息TITLE,x.消息类型,x.发送时间,x.阅读时间,x.老师ID, IF(x.四天内最近一次登录时间='2100-01-01 00:00:00','',x.四天内最近一次登录时间) 四天内最近一次登录时间 FROM (SELECT msg.*, CASE WHEN login.login_time BETWEEN msg.发送时间 AND DATE_ADD(msg.发送时间,INTERVAL 4 DAY) THEN login.login_time WHEN (login.login_time NOT BETWEEN msg.发送时间 AND DATE_ADD(msg.发送时间,INTERVAL 4 DAY)) AND login.login_time>0 THEN '2100-01-01 00:00:00' ELSE '' END 四天内最近一次登录时间 FROM (SELECT me.id 消息ID,me.title 消息TITLE, CASE WHEN me.type=1 THEN 'Interview Message' WHEN me.type=2 THEN 'Orientation Message' WHEN me.type=3 THEN 'Warning Message' WHEN me.type=4 THEN 'Fail Message' WHEN me.type=5 THEN 'FM Message' WHEN me.type=6 THEN 'Training Message' WHEN me.type=7 THEN 'TUrgent Message' END 消息类型, FROM_UNIXTIME(me.sending_time) 发送时间, IF(tar.is_read=1,FROM_UNIXTIME(tar.read_time),'') 阅读时间, tar.tid 老师ID FROM ebk_message me LEFT JOIN ebk_message_target tar ON me.id=tar.msg_id WHERE FROM_UNIXTIME(me.sending_time,'%Y-%m-%d') BETWEEN 'start' AND 'end' AND me.status=1 AND tar.tid>0 GROUP BY tar.tid,me.sending_time,me.id) msg LEFT JOIN (SELECT tid,FROM_UNIXTIME(login_time) login_time FROM ebk_teacher_login_log WHERE FROM_UNIXTIME(login_time,'%Y-%m-%d') BETWEEN 'start' AND DATE_ADD('end',INTERVAL 4 DAY) ORDER BY tid,FROM_UNIXTIME(login_time)) login ON msg.老师ID=login.tid ORDER BY msg.消息ID,msg.发送时间,msg.老师ID,login_time) x GROUP BY x.消息ID,x.发送时间,x.老师ID; This query is no problem. But there is a error: SELECT x.消息ID,x.消息TITLE,x.消息类型,x.发送时间,x.阅读时间,x.老师ID, IF(x.4天内最近一次登录时间='2100-01-01 00:00:00','',x.4天内最近一次登录时间) 4天内最近一次登录时间 FROM (SELECT msg.*, CASE WHEN login.login_time BETWEEN msg.发送时间 AND DATE_ADD(msg.发送时间,INTERVAL 4 DAY) THEN login.login_time WHEN (login.login_time NOT BETWEEN msg.发送时间 AND DATE_ADD(msg.发送时间,INTERVAL 4 DAY)) AND login.login_time>0 THEN '2100-01-01 00:00:00' ELSE '' END 4天内最近一次登录时间 FROM (SELECT me.id 消息ID,me.title 消息TITLE, CASE WHEN me.type=1 THEN 'Interview Message' WHEN me.type=2 THEN 'Orientation Message' WHEN me.type=3 THEN 'Warning Message' WHEN me.type=4 THEN 'Fail Message' WHEN me.type=5 THEN 'FM Message' WHEN me.type=6 THEN 'Training Message' WHEN me.type=7 THEN 'TUrgent Message' END 消息类型, FROM_UNIXTIME(me.sending_time) 发送时间, IF(tar.is_read=1,FROM_UNIXTIME(tar.read_time),'') 阅读时间, tar.tid 老师ID FROM ebk_message me LEFT JOIN ebk_message_target tar ON me.id=tar.msg_id WHERE FROM_UNIXTIME(me.sending_time,'%Y-%m-%d') BETWEEN 'start' AND 'end' AND me.status=1 AND tar.tid>0 GROUP BY tar.tid,me.sending_time,me.id) msg LEFT JOIN (SELECT tid,FROM_UNIXTIME(login_time) login_time FROM ebk_teacher_login_log WHERE FROM_UNIXTIME(login_time,'%Y-%m-%d') BETWEEN 'start' AND DATE_ADD('end',INTERVAL 4 DAY) ORDER BY tid,FROM_UNIXTIME(login_time)) login ON msg.老师ID=login.tid ORDER BY msg.消息ID,msg.发送时间,msg.老师ID,login_time) x GROUP BY x.消息ID,x.发送时间,x.老师ID; ERROR 1300 (HY000): Invalid utf8 character string: '4\xE5' just "四天内最近一次登录时间" to "4天内最近一次登录时间" |
| Comments |
| Comment by Alexander Barkov [ 2019-04-21 ] | ||
|
Repeatable with this query:
| ||
| Comment by Alexander Barkov [ 2019-04-21 ] | ||
|
A fix for this problem has been pushed to 10.3.15. In the meanwhile, please use backticks around such identifiers (starting with digits, followed by multi-byte characters), e.g.: SELECT x AS `5天内最近一次登录时间` FROM t1; |