#1273 - Unknown collation: 'utf8'


To czdebian-l zavinac debian bod cz
From Petr Heřman <ph zavinac lf2 bod cuni bod cz>
Date Sun, 20 Jan 2008 03:21:59 +0100
Mail-followup-to czdebian-l zavinac debian bod cz
User-agent Mutt/1.5.13 (2006-08-11)

Jak jsem teď upgradeoval na lenny, tak tam mám
Linux                2.6.21-2-k7
apache2              2.2.6-3
libapache2-mod-php5  5.2.4-2+b1
mysql Server         5.0.45-5 (Debian)
phpMyadmin           4:2.11.3-2

po spuštění z URL
http://localhost/phpmyadmin/
namísto úvodní stránky vydá jen červený chlívek
s chybovou hláškou:

Chyba
MySQL hlásí:
#1273 - Unknown collation: 'utf8'

Vygoogloval jsem, že asi nejsem jediný na světě,
komu se takové věci stávají, ale žádné řešení jsem
stejně nenašel.

Na
http://dev.mysql.com/doc/refman/5.0/en/error-messages-server.html
ta chyba nijak blíž vysvětlená není.

Najednou koukám, že URL toho dokumentu je:
http://localhost/phpmyadmin/main.php?lang=cs-utf-8&convcharset=utf8&collation_connection=utf8&token=7c3840462ead0b159c6479ed776575ef

Tak ten ocas z okénka browseru umažu, nechám tam jen:
http://localhost/phpmyadmin/main.php

a dostanu normální přihlašovací okénko.
Zadám do něj login a passwd a tu hlášku tam mám znova, URL je teď:
http://localhost/phpmyadmin/index.php?lang=cs-utf-8&convcharset=utf8&collation_connection=utf8&token=29b468642492e450779d83d3a9b3da7f

Když ten ocas zase umažu a nechám tam jen:
http://localhost/phpmyadmin/index.php
tak mi to už nepomůže, to chybové okénko tam visí pořád.
Trik přestal fungovat.

Tak mi napadá jen, jestli náhodou ta kolace nemá být správně
'utf8_general_ci'
ale nevím, jak se tam k tomu serveru dostane.

Nebo to je tím, že ten mysql server má defaultně:
mysql> SHOW VARIABLES LIKE 'collation%';
+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | latin1_swedish_ci | 
| collation_database   | latin1_swedish_ci | 
| collation_server     | latin1_swedish_ci | 
+----------------------+-------------------+

Zkusil jsem dát do  /etc/mysql/my.cnf
do sekce
[mysqld]
init-connect = 'SET NAMES utf8'

pak
/etc/init.d/mysql restart

mysql> SHOW VARIABLES LIKE 'collation%';
+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | utf8_general_ci   | 
| collation_database   | latin1_swedish_ci | 
| collation_server     | latin1_swedish_ci | 
+----------------------+-------------------+

Ale nepomohlo to.

Tak jsem ještě přidal:
collation_server = utf8_unicode_ci
character_set_server=utf8
+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_general_ci | 
| collation_database   | utf8_unicode_ci | 
| collation_server     | utf8_unicode_ci | 
+----------------------+-----------------+
a furt nic.

A nakonec:
character_set_server = utf8
collation_server     = utf8_unicode_ci
skip-character-set-client-handshake
+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_unicode_ci | 
| collation_database   | utf8_unicode_ci | 
| collation_server     | utf8_unicode_ci | 
+----------------------+-----------------+
a zase nic, takže chyba byde asi jinde.

Ve  /var/www/phpmyadmin/scripts/setup.php
taky nevidim nic, kde by se něco takového dalo nastavit.

Tak fakt už teď nevim.

Petr Heřman

Partial thread listing: