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?
- 1531 megtekintés
Hozzászólások
mysql --default-character-set=latin2 database_name ' csatlakozz így!
- A hozzászóláshoz be kell jelentkezni
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 |
- A hozzászóláshoz be kell jelentkezni
lehet, hogy ez segít (emlékeim szerint a tárolt eljárások nem rendelkeznek saját charsettel és collationnel, hanem az adatbázisét használják, na annak viszont az alapértelmezése valamiért a svéd):
alter database character set latin2 collate latin2_general_ci
- A hozzászóláshoz be kell jelentkezni
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 :)
- A hozzászóláshoz be kell jelentkezni