| Bug #12371 | executing prepared statement fails (illegal mix of collations) | ||
|---|---|---|---|
| Submitted: | 4 Aug 2005 11:17 | Modified: | 23 Oct 2005 0:42 | 
| Reporter: | Georg Richter | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server | Severity: | S1 (Critical) | 
| Version: | 5.0.11 | OS: | Linux (Linux) | 
| Assigned to: | Alexander Barkov | CPU Architecture: | Any | 
   [6 Aug 2005 12:03]
   Bugs System        
  A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/internals/27958
   [29 Aug 2005 11:53]
   Bugs System        
  A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/internals/28969
   [5 Sep 2005 12:40]
   Michael Widenius        
  Bug fixed in 4.1; For 5.0 we need another solution
   [22 Sep 2005 9:46]
   Bugs System        
  A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/internals/30195
   [12 Oct 2005 1:28]
   William Leung        
  The problem is exists in mysql 4.1.14 but it is ok in mysql 4.1.12/4.1.13. Please see bug #13633
   [21 Oct 2005 12:12]
   Alexander Barkov        
  Fixed in 5.0.16. In 4.1 it was fixed earlier.
   [23 Oct 2005 0:42]
   Paul DuBois        
  Noted in 4.1.15, 5.0.16 changelogs.


Description: When client character set is utf8 and table character set is latin1, an execute of a simple prepared statement fails with "illegal mix of collations" error. Coercibility for @a is 2 (=Implicit) but error message says it's coercibile :-( How to repeat: set names utf8; create table t1 (a char(3), b varchar(10)); insert into t1 values ('bar','kostja'); prepare my_stmt from "select * from t1 where a=?"; set @a:='bar'; execute my_stmt using @a; ERROR 1267 (HY000): Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=' select charset(@a), coercibility(@a); +-------------+------------------+ | charset(@a) | coercibility(@a) | +-------------+------------------+ | utf8 | 2 | +-------------+------------------+