latin1_icelandic_ci
26. mars 2008
MySQL kennt að starfrófsraða íslenskum texta kóðuðum skv. latin1 stafasettinu. Það er að segja leiðbeiningar um hvernig bæta skal latin1_icelandic_ci
collation-inu við.
Fyrst þarf að bæta eftirfarandi við /usr/share/mysql/charsets/latin1.xml
(inni í charsets
og charset
töggunum):
<collation name="latin1_icelandic_ci">
<map>
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F
30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F
40 41 44 45 47 49 4C 4D 4E 4F 52 53 54 55 56 58
5B 5C 5D 5E 5F 60 63 64 65 66 69 6E 6F 70 71 72
73 41 44 45 47 49 4C 4D 4E 4F 52 53 54 55 56 58
5B 5C 5D 5E 5F 60 63 64 65 66 69 7B 7C 7D 7E 7F
80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F
90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF
B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF
43 42 43 43 43 43 6B 46 4B 4A 4B 4B 51 50 51 51
48 57 5A 59 5A 5A 6C D7 6D 62 61 62 62 67 6A DF
43 42 43 43 43 43 6B 46 4B 4A 4B 4B 51 50 51 51
48 57 5A 59 5A 5A 6C F7 6D 62 61 62 62 67 6A 68
</map>
</collation>
Þetta er einfaldlega vörpun frá staftákninu til raðnúmers (hex). Vörpunartaflan gefur bókstafsröðunina: a, á, (àâãåä), b, c, ç, d, ð, e, é, (èêë), f, g, h, i, í, (ìîï), j, k, l, m, n, ñ, o, ó, (òôõ), p, q, r, s, t, u, ú, (ùûü), v, w, x, y, ý, ÿ, z, þ, æ, ö, ø.
Svo þarf að bæta eftirfarandi við /usr/share/mysql/Index.xml
:
<charset name="latin1">
[…]
<collation name="latin1_icelandic_ci" id="250″ order="Icelandic" />
</charset>
Það þarf að tryggja að id-ið sem valið er sé laust. Lista yfir id sem eru í notkun er hægt að fá með SELECT id FROM information_schema.collations ORDER BY id;
Eftir að MySQL hefur verið restartað ætti nýja collation-ið að standa til boða.
mysql> SHOW COLLATION LIKE '%icelandic%'; +---------------------+---------+-----+---------+----------+---------+ | Collation | Charset | Id | Default | Compiled | Sortlen | +---------------------+---------+-----+---------+----------+---------+ | latin1_icelandic_ci | latin1 | 250 | | | 0 | | utf8_icelandic_ci | utf8 | 193 | | Yes | 8 | | ucs2_icelandic_ci | ucs2 | 129 | | Yes | 8 | +---------------------+---------+-----+---------+----------+---------+ 3 rows in set (0.00 sec)
26. maí 2008 kl. 10.06
/mysql/share/mysql/charsets/latin1.xml
ætti að vera:
/usr/share/mysql/charsets/latin1.xml
ekki satt?
26. maí 2008 kl. 20.10
Jú, takk fyrir ábendinguna.
9. júní 2008 kl. 13.45
Takk fyrir leiðbeiningarnar.
5. maí 2010 kl. 0.17
Ef maður uppfærir svo mysql og gleymir collation-inu þá birtist villan
Unknown collation '#250' in table 'tafla.frm' definition
þegar reynt er að nota töflu sem er skilgreind með því.mysql> CHECK TABLE tafla;
+---------------+-------+----------+----------------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+---------------+-------+----------+----------------------------------------------------------+
| grunnur.tafla | check | Error | Unknown collation '#250' in table 'tafla.frm' definition |
| grunnur.tafla | check | Error | Malformed file type header in file './grunnur/tafla.frm' |
| grunnur.tafla | check | error | Corrupt |
+---------------+-------+----------+----------------------------------------------------------+
3 rows in set (0.00 sec)
Þá er ráð að setja collation-ið inn aftur og passa að það hafi sama númer og áður.