Bug 26817

Summary: Некорректно определяется кодировка по-умолчанию в init.d-скрипте в случаях когда /etc/sysconfig/mysqld не содержит явного ее указания
Product: Sisyphus Reporter: Dmitriy Shadrinov <shadrinov>
Component: MySQL-serverAssignee: Michael Shigorin <mike>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: minor    
Priority: P3 CC: mike, nickel, rider, shaba
Version: unstable   
Hardware: all   
OS: Linux   
Attachments:
Description Flags
initscript patch none

Description Dmitriy Shadrinov 2012-01-14 12:42:27 MSK
В такие случая скрипт полагается на результат команды

default_charset="$(HOME=/var/empty . /etc/profile.d/lang.sh && locale |sed -ne 's/^LC_COLLATE="\?[^".]\+\.\([^"]\+\)"\?$/\1/p')"

что в случае использования UTF-8 дает 'utf8', скрипт же ожидает вариант 'UTF-8'. Быть может стоит сделать так что бы срабатывало на оба варианта и учесть возможность больших и маленьких букв, например так:

    CP1251|cp1251)
      CHSET=cp1251
      ;;
    KOI8-R|koi8-r)
      CHSET=koi8r
      ;;
    KOI8-U|koi8-u)
      CHSET=koi8u
      ;;
    UTF-8|UTF8|utf-8|utf8)
      CHSET=utf8
      ;;
    *)
      echo "Unable to find proper charset from system locale, setting 'utf8'."
      echo "Please edit mysqld init script and set proper charset."
      CHSET=utf8
      ;;
Comment 1 Michael Shigorin 2012-01-14 16:47:39 MSK
(In reply to comment #0)
> что в случае использования UTF-8 дает 'utf8'
Давайте разбираться, почему.

У меня при /etc/profile.d/lang.sh из setup-2.2.14-alt1 и

---
LC_CTYPE=ru_RU.UTF-8
LC_MONETARY=ru_RU.UTF-8
LC_TIME=ru_RU.UTF-8
LC_NUMERIC=ru_RU.UTF-8
LC_COLLATE=ru_RU.UTF-8
LC_MESSAGES=ru_RU.UTF-8
LANG=ru_RU.UTF-8
--- `grep ^L /etc/sysconfig/i18n`

(~/.i18n специально игнорируется выставлением пустого домашнего каталога)

команда

> echo "$(HOME=/var/empty . /etc/profile.d/lang.sh && locale |sed -ne 's/^LC_COLLATE="\?[^".]\+\.\([^"]\+\)"\?$/\1/p')"

выдаёт "UTF-8".

Покажите вывод команды "rpm -V setup", содержимое /etc/sysconfig/i18n и что именно выводит вышеозначенное echo.
Comment 2 Dmitriy Shadrinov 2012-01-26 15:38:37 MSK
На моей машине так:

[user@book ~]$ rpm -q setup
setup-2.2.14-alt1

[user@book ~]$ grep ^L /etc/sysconfig/i18n
LANGUAGE=ru_RU.utf8
LANG=ru_RU.utf8

[user@book ~]$ echo "$(HOME=/var/empty . /etc/profile.d/lang.sh && locale |sed -ne 's/^LC_COLLATE="\?[^".]\+\.\([^"]\+\)"\?$/\1/p')"
utf8

Очевидно вывод последней команды зависит от регистра кодировки в i18n. Может быть стоит приводить его, например, к верхнему регистру прежде?
Comment 3 Michael Shigorin 2012-10-08 18:03:37 MSK
Created attachment 5588 [details]
initscript patch

Примерно так?
Comment 4 Repository Robot 2012-10-14 20:34:56 MSK
MySQL-5.5.28-alt2 -> sisyphus:

* Thu Oct 11 2012 Michael Shigorin <mike@altlinux> 5.5.28-alt2
- fixed one-byte postun trigger thinko (included current version)

* Thu Oct 11 2012 Michael Shigorin <mike@altlinux> 5.5.28-alt1
- 5.5.28 (closes: #27016)
  + NB: innodb is builtin *again*, please pay attention to my.cnf
- use innodb_file_per_table (closes: #27072)
- fixed charset handling in initscript (closes: #26817)
- implemented extendedstatus in initscript (closes: #7719)
- implemented basic control facility (lnkvisitor@)

* Mon Jun 18 2012 Dmitriy Kulik <lnkvisitor@altlinux> 5.5.25-alt1
- Test build Mysql 5.5.25