Bug #96379 | First query successfull, second - ERROR 1270 (HY000): Illegal mix of collations | ||
---|---|---|---|
Submitted: | 31 Jul 2019 5:55 | Modified: | 1 Aug 2019 4:20 |
Reporter: | Владислав Сокол | Email Updates: | |
Status: | Verified | Impact on me: | |
Category: | MySQL Server: Optimizer | Severity: | S3 (Non-critical) |
Version: | 8.0.16, 8.0.17, 5.7.27 | OS: | Windows |
Assigned to: | CPU Architecture: | x86 |
[31 Jul 2019 5:55]
Владислав Сокол
[31 Jul 2019 6:09]
MySQL Verification Team
Hello Владислав Сокол, Thank you for the report and feedback. regards, Umesh
[31 Jul 2019 6:10]
MySQL Verification Team
- 8.0.16, 8.0.17 bin/mysql -uroot -S /tmp/mysql_ushastry.sock Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 7 Server version: 8.0.17 MySQL Community Server - GPL Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show variables like '%coll%'; +-------------------------------+--------------------+ | Variable_name | Value | +-------------------------------+--------------------+ | collation_connection | utf8mb4_0900_ai_ci | | collation_database | utf8mb4_0900_ai_ci | | collation_server | utf8mb4_0900_ai_ci | | default_collation_for_utf8mb4 | utf8mb4_0900_ai_ci | +-------------------------------+--------------------+ 4 rows in set (0.00 sec) mysql> WITH -> cte1 AS ( SELECT 0 num -> UNION SELECT 1 -> UNION SELECT 2 -> UNION SELECT 3 -> UNION SELECT 4 -> UNION SELECT 5 -> UNION SELECT 6), -> cte2 AS (SELECT (@firstday:=CAST(CONCAT(@year:=2019, '-', @month:=5, '-1') AS DATE)) + INTERVAL cte1.num * 7 DAY somedate -> FROM cte1) -> SELECT somedate - INTERVAL 3 + WEEKDAY(somedate) DAY friday -> FROM cte2 -> HAVING friday BETWEEN @firstday -> AND @firstday + INTERVAL 1 MONTH + INTERVAL 5 DAY; +------------+ | friday | +------------+ | 2019-05-03 | | 2019-05-10 | | 2019-05-17 | | 2019-05-24 | | 2019-05-31 | +------------+ 5 rows in set, 3 warnings (0.04 sec) mysql> show warnings; +---------+------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Level | Code | Message | +---------+------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Warning | 1287 | Setting user variables within expressions is deprecated and will be removed in a future release. Consider alternatives: 'SET variable=expression, ...', or 'SELECT expression(s) INTO variables(s)'. | | Warning | 1287 | Setting user variables within expressions is deprecated and will be removed in a future release. Consider alternatives: 'SET variable=expression, ...', or 'SELECT expression(s) INTO variables(s)'. | | Warning | 1287 | Setting user variables within expressions is deprecated and will be removed in a future release. Consider alternatives: 'SET variable=expression, ...', or 'SELECT expression(s) INTO variables(s)'. | +---------+------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 3 rows in set (0.00 sec) mysql> WITH -> cte1 AS ( SELECT 0 num -> UNION SELECT 1 -> UNION SELECT 2 -> UNION SELECT 3 -> UNION SELECT 4 -> UNION SELECT 5 -> UNION SELECT 6), -> cte2 AS (SELECT (@firstday:=CAST(CONCAT(@year:=2019, '-', @month:=5, '-1') AS DATE)) + INTERVAL cte1.num * 7 DAY somedate -> FROM cte1) -> SELECT somedate - INTERVAL 3 + WEEKDAY(somedate) DAY friday -> FROM cte2 -> HAVING friday BETWEEN @firstday -> AND @firstday + INTERVAL 1 MONTH + INTERVAL 5 DAY; ERROR 1270 (HY000): Illegal mix of collations (utf8mb4_0900_ai_ci,COERCIBLE), (latin1_swedish_ci,IMPLICIT), (utf8mb4_0900_ai_ci,COERCIBLE) for operation 'between' mysql> mysql> WITH -> cte1 AS ( SELECT 0 num -> UNION SELECT 1 -> UNION SELECT 2 -> UNION SELECT 3 -> UNION SELECT 4 -> UNION SELECT 5 -> UNION SELECT 6), -> cte2 AS (SELECT (@firstday:=CAST(CONCAT(@year:=2019, '-', @month:=5, '-1') AS DATE)) + INTERVAL cte1.num * 7 DAY somedate -> FROM cte1) -> SELECT somedate - INTERVAL 3 + WEEKDAY(somedate) DAY friday -> FROM cte2 -> HAVING friday BETWEEN @firstday -> AND @firstday + INTERVAL 1 MONTH + INTERVAL 5 DAY; ERROR 1270 (HY000): Illegal mix of collations (utf8mb4_0900_ai_ci,COERCIBLE), (latin1_swedish_ci,IMPLICIT), (utf8mb4_0900_ai_ci,COERCIBLE) for operation 'between' mysql>
[31 Jul 2019 13:24]
Peter Laursen
There will not need to be a Russian collation involved. Even with defaults like collation_database utf8mb4_0900_ai_ci collation_server utf8mb4_0900_ai_ci default_collation_for_utf8mb4 utf8mb4_0900_ai_ci .. the same thing happens.
[1 Aug 2019 4:20]
Владислав Сокол
2 Peter Laursen Of course. The query do not interact with database, so its collation doesn't matter.