Bug #60101 | COALESCE with cp1251 tables causes [Err] 1267 - Illegal mix of collations | ||
---|---|---|---|
Submitted: | 10 Feb 2011 19:12 | Modified: | 15 May 2013 16:29 |
Reporter: | Anton Kozhenikov | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Charsets | Severity: | S2 (Serious) |
Version: | 5.5.8, 5.5.9 | OS: | Any |
Assigned to: | Assigned Account | CPU Architecture: | Any |
Tags: | COALESCE, COERCIBLE, Illegal mix of collations, latin1_swedish_ci, regression |
[10 Feb 2011 19:12]
Anton Kozhenikov
[10 Feb 2011 19:14]
Anton Kozhenikov
For table structure I mean CREATE TABLE `test` ( `test1` int(11) DEFAULT NULL, `test2` varchar(255) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=cp1251; Sorry
[10 Feb 2011 20:41]
Aleksandr Semyonov
Yes, I see this problem on my Mysql server to and it is very bad, so bad...
[11 Feb 2011 7:19]
Valeriy Kravchuk
Verified on Windows XP: C:\Program Files\MySQL\MySQL Server 5.1\bin>mysql -uroot -proot -P3312 test Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 14 Server version: 5.5.8 MySQL Community Server (GPL) Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL v2 license Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> CREATE TABLE `test` ( -> `test1` int(11) DEFAULT NULL, -> `test2` varchar(255) DEFAULT NULL -> ) ENGINE=MyISAM DEFAULT CHARSET=cp1251; Query OK, 0 rows affected (0.08 sec) mysql> SELECT -> COALESCE( -> IF(pr.test1 = 1, 1, NULL), -> test2 -> ) -> -> FROM test pr -> -> ; ERROR 1267 (HY000): Illegal mix of collations (latin1_swedish_ci,COERCIBLE) and (cp1251_general_ci,IMPLICIT) for operation 'coalesce' mysql> show variables like 'char%'; +--------------------------+---------------------------------------------------- -----+ | Variable_name | Value | +--------------------------+---------------------------------------------------- -----+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.5\share\chars ets\ | +--------------------------+---------------------------------------------------- -----+ 8 rows in set (0.03 sec) mysql> set names cp1251; Query OK, 0 rows affected (0.00 sec) mysql> SELECT -> COALESCE( -> IF(pr.test1 = 1, 1, NULL), -> test2 -> ) -> -> FROM test pr -> -> ; ERROR 1267 (HY000): Illegal mix of collations (latin1_swedish_ci,COERCIBLE) and (cp1251_general_ci,IMPLICIT) for operation 'coalesce' mysql> exit Bye Note that it works with 5.1.54: C:\Program Files\MySQL\MySQL Server 5.1\bin>mysql -uroot -proot -P3310 test Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 40 Server version: 5.1.54-community MySQL Community Server (GPL) Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL v2 license Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> CREATE TABLE `test` ( -> `test1` int(11) DEFAULT NULL, -> `test2` varchar(255) DEFAULT NULL -> ) ENGINE=MyISAM DEFAULT CHARSET=cp1251; Query OK, 0 rows affected (0.53 sec) mysql> SELECT -> COALESCE( -> IF(pr.test1 = 1, 1, NULL), -> test2 -> ) -> -> FROM test pr -> -> ; Empty set (0.13 sec) So, we have a regression bug here.
[11 Feb 2011 9:02]
Alexander Barkov
A patch has been committed: http://lists.mysql.com/commits/131104
[15 May 2013 16:29]
MySQL Verification Team
This bug was totally resolved back in 2011 ... Sorry for small delay ....
[3 Jun 2013 15:17]
Paul DuBois
Noted in 5.5.11, 5.6.2 changelogs. Queries that used COALESCE() with cp1251 strings could result in an "illegal mix of collations" error.