mysql tárolt eljárás és betűkészlet hiba

Szia!

Adott egy Debian Squeeze, mysql 5.1.49-1 -el. Van benne egy tábla:

DROP TABLE IF EXISTS `dev_type`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `dev_type` (
  `type` char(30) COLLATE latin2_hungarian_ci NOT NULL,
  PRIMARY KEY (`type`)
) ENGINE=InnoDB DEFAULT CHARSET=latin2 COLLATE=latin2_hungarian_ci COMMENT='Eszköz típusok';
/*!40101 SET character_set_client = @saved_cs_client */;

Beállított karakterkódolások:

mysql> show variables like '%coll%';
+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | latin2_general_ci |
| collation_database   | latin2_general_ci |
| collation_server     | latin2_general_ci |
+----------------------+-------------------+

mysql> show variables like '%char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin2                     |
| character_set_connection | latin2                     |
| character_set_database   | latin2                     |
| character_set_filesystem | binary                     |
| character_set_results    | latin2                     |
| character_set_server     | latin2                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

Létrehoznák egy tárolt eljárást:

mysql> drop procedure if exists addtype;
Query OK, 0 rows affected (0.00 sec)

mysql> delimiter $$
mysql> 
mysql> create procedure addtype(element varchar(16))
    ->  begin
    ->  declare num int;
    ->  select count(*) into num from dev_type where type=element;
    ->  select (num);
    ->  end
    ->  $$
Query OK, 0 rows affected (0.00 sec)

mysql> delimiter ;

Eddig minden rendben is van. Amikor viszont használni szeretném:

mysql> call addtype('3');
ERROR 1267 (HY000): Illegal mix of collations (latin2_hungarian_ci,IMPLICIT) and (latin1_swedish_ci,IMPLICIT) for operation '='

Honnan szedi a svéd betűkódolást és mit lehet ellene tenni?

Hozzászólások

mysql --default-character-set=latin2 database_name ' csatlakozz így!

Eredmény ugyanez. :(
Kapcsolat betűkészlete már előzőleg latin2 volt, nemde? Lásd:
| collation_connection | latin2_general_ci |
| character_set_client | latin2 |
| character_set_connection | latin2 |

Alapértelmezett a magyar betűkészlet:
mysql> select collation('3');
+---------------------+
| collation('3') |
+---------------------+
| latin2_hungarian_ci |

http://en.wikipedia.org/wiki/MySQL

MySQL was owned and sponsored by a single for-profit firm, the Swedish company MySQL AB, now owned by Oracle Corporation.

hát ezért.

cserébe az angol karaktereket a svéd charset is tartalmazza.

ha ettől kicsit jobban érzed magad, ezt nem olyan rég én is besz_ptam :)