Ad Widget

Collapse

и снова кирилица на карте

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • oalex
    Member
    • Jul 2009
    • 86

    #1

    и снова кирилица на карте

    Добрый день
    вопрос
    вот тут http://www.zabbix.com/forum/showthre...2884#post72884
    очень хорошо отображаются русские буквы.
    У меня никак.. переезжал с версии 1.4 на 1.6 потом на 1.8 (база та же самая) сконверчена в utf8 но.. добавляешь русскую подпись на русском допустим тест123, нажимаешь сохранить и в базу летит (select * from sysmaps_elements) ????123
    и на карте тоже самое

    при попытке создать карту с русским именем получаю
    " * Error in query [SELECT s.sysmapid FROM sysmaps s WHERE ((s.sysmapid BETWEEN 100000000000000 AND 199999999999999)) AND s.name='тест' LIMIT 1 OFFSET 0] [Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=']
    * mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource[/usr/share/zabbix/include/db.inc.php:544]
    * mysql_free_result(): supplied argument is not a valid MySQL result resource[/usr/share/zabbix/include/db.inc.php:546]"

    откуда latin1_swedish_ ?
    где и что покрутить?
    Last edited by oalex; 06-10-2010, 13:40.
  • dima_dm
    Senior Member
    • Dec 2009
    • 2697

    #2
    А Вы выполнили
    upgrades/dbpatches/1.8/mysql/patch.sql
    Как написано здесь
    http://www.zabbix.com/documentation/...tion/upgrading
    И проверили, что на всех таблицах CHARSET=utf8. У меня после этих действий, все проблемы с русскими буквами пропали.
    Пример
    Code:
    SHOW CREATE TABLE hosts;
    
    hosts |CREATE TABLE `hosts` (
      `hostid` bigint(20) unsigned NOT NULL default '0',
      `proxy_hostid` bigint(20) unsigned NOT NULL default '0',
      `host` varchar(64) NOT NULL default '',
      `dns` varchar(64) NOT NULL default '',
      `useip` int(11) NOT NULL default '1',
      `ip` varchar(39) NOT NULL default '127.0.0.1',
      `port` int(11) NOT NULL default '10050',
      `status` int(11) NOT NULL default '0',
      `disable_until` int(11) NOT NULL default '0',
      `error` varchar(128) NOT NULL default '',
      `available` int(11) NOT NULL default '0',
      `errors_from` int(11) NOT NULL default '0',
      `lastaccess` int(11) NOT NULL default '0',
      `inbytes` bigint(20) unsigned NOT NULL default '0',
      `outbytes` bigint(20) unsigned NOT NULL default '0',
      `useipmi` int(11) NOT NULL default '0',
      `ipmi_port` int(11) NOT NULL default '623',
      `ipmi_authtype` int(11) NOT NULL default '0',
      `ipmi_privilege` int(11) NOT NULL default '2',
      `ipmi_username` varchar(16) NOT NULL default '',
      `ipmi_password` varchar(20) NOT NULL default '',
      `ipmi_disable_until` int(11) NOT NULL default '0',
      `ipmi_available` int(11) NOT NULL default '0',
      `snmp_disable_until` int(11) NOT NULL default '0',
      `snmp_available` int(11) NOT NULL default '0',
      `maintenanceid` bigint(20) unsigned NOT NULL default '0',
      `maintenance_status` int(11) NOT NULL default '0',
      `maintenance_type` int(11) NOT NULL default '0',
      `maintenance_from` int(11) NOT NULL default '0',
      `ipmi_ip` varchar(64) NOT NULL default '127.0.0.1',
      `ipmi_errors_from` int(11) NOT NULL default '0',
      `snmp_errors_from` int(11) NOT NULL default '0',
      `ipmi_error` varchar(128) NOT NULL default '',
      `snmp_error` varchar(128) NOT NULL default '',
      PRIMARY KEY  (`hostid`),
      KEY `hosts_1` (`host`),
      KEY `hosts_2` (`status`),
      KEY `hosts_3` (`proxy_hostid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8

    Comment

    • oalex
      Member
      • Jul 2009
      • 86

      #3
      Originally posted by dima_dm
      А Вы выполнили
      upgrades/dbpatches/1.8/mysql/patch.sql
      Как написано здесь
      http://www.zabbix.com/documentation/...tion/upgrading
      И проверили, что на всех таблицах CHARSET=utf8. У меня после этих действий, все проблемы с русскими буквами пропали.
      Пример
      Code:
      SHOW CREATE TABLE hosts;
      
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8
      запускал апгрейд с патча, но в таблице ENGINE=InnoDB DEFAULT CHARSET=latin1
      что делать?

      Comment

      • dima_dm
        Senior Member
        • Dec 2009
        • 2697

        #4
        Originally posted by oalex
        запускал апгрейд с патча, но в таблице ENGINE=InnoDB DEFAULT CHARSET=latin1
        что делать?
        Можете руками конвертнуть
        Code:
        ALTER TABLE users CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
        Но учтите, что процедура достаточно длительная, и время выполнения зависит от размера базы. У меня часов 10 база конвертировалась.

        Там есть ещё скрипт zabbix-1.8.3/upgrades/dbpatches/1.8/mysql/upgrade
        В нем вы можете руками закомментировать всё лишнее, кроме конвертации базы, чтобы руками команды не вводить.
        Last edited by dima_dm; 06-10-2010, 14:58.

        Comment

        • oalex
          Member
          • Jul 2009
          • 86

          #5
          Originally posted by dima_dm
          Можете руками конвертнуть
          Code:
          ALTER TABLE users CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
          Но учтите, что процедура достаточно длительная, и время выполнения зависит от размера базы. У меня часов 10 база конвертировалась.

          Там есть ещё скрипт zabbix-1.8.3/upgrades/dbpatches/1.8/mysql/upgrade
          В нем вы можете руками закомментировать всё лишнее, кроме конвертации базы, чтобы руками команды не вводить.
          Спасибо, попробую, отпишусь.
          Изучал тут свои сервера пришел к выводу, что латиница на той машине, где база создавалась с нуля скриптами из пакета установки. На тех же машинах, где был апгрейд и патч базы - стоит utf8.

          p.s.
          база 2.8Г ... conversion to UTF8 took 1:27:00
          Помогло! Большое спасибо!
          Last edited by oalex; 07-10-2010, 08:39.

          Comment

          • dima_dm
            Senior Member
            • Dec 2009
            • 2697

            #6
            Сегодня перенёс свою систему на Mysql 5.1.52 и опять полезли проблемы с русским текстом. Как я её решил:
            /etc/my.cnf
            Code:
            [client]
            default-character-set=utf8
            
            [mysqld]
            #utf8
            character_set_server=utf8
            collation-server=utf8_bin
            init_connect="SET NAMES utf8 collate utf8_bin"
            
            [mysql]
            default-character-set=utf8
            Переменные MySQL
            Code:
            mysql> show variables like 'init%';
            +---------------+---------------------------------+
            | Variable_name | Value                           |
            +---------------+---------------------------------+
            | init_connect  | SET NAMES utf8 collate utf8_bin |
            | init_file     |                                 |
            | init_slave    |                                 |
            +---------------+---------------------------------+
            3 rows in set (0.00 sec)
            
            mysql> show variables like "%collat%";
            +----------------------+-----------------+
            | Variable_name        | Value           |
            +----------------------+-----------------+
            | collation_connection | utf8_general_ci |
            | collation_database   | utf8_bin        |
            | collation_server     | utf8_bin        |
            +----------------------+-----------------+
            3 rows in set (0.00 sec)
            
            mysql> show variables like "char%";
            +--------------------------+----------------------------+
            | Variable_name            | Value                      |
            +--------------------------+----------------------------+
            | character_set_client     | utf8                       |
            | character_set_connection | utf8                       |
            | character_set_database   | utf8                       |
            | character_set_filesystem | binary                     |
            | character_set_results    | utf8                       |
            | character_set_server     | utf8                       |
            | character_set_system     | utf8                       |
            | character_sets_dir       | /usr/share/mysql/charsets/ |
            +--------------------------+----------------------------+
            8 rows in set (0.00 sec)

            mysql> alter database zabbix collate utf8_bin;
            Query OK, 1 row affected (0.00 sec)

            mysql> SHOW CREATE database zabbix;
            +----------+----------------------------------------------------------------------------------+
            | Database | Create Database |
            +----------+----------------------------------------------------------------------------------+
            | zabbix | CREATE DATABASE `zabbix` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */ |
            +----------+----------------------------------------------------------------------------------+
            1 row in set (0.00 sec)
            Last edited by dima_dm; 03-03-2011, 17:57.

            Comment

            • Horror777
              Member
              • Jun 2009
              • 36

              #7
              Решаю поддержку русского простым действием.
              Закоменчиваю строки 69 и 70 в файле db.inc.php.
              У меня данный метод работает безотказно начиная с версии 1.6.5.
              Сейчас 1.8.4, БД MySql - полёт нормальный.

              Comment

              • dima_dm
                Senior Member
                • Dec 2009
                • 2697

                #8
                Originally posted by Horror777
                Решаю поддержку русского простым действием.
                Закоменчиваю строки 69 и 70 в файле db.inc.php.
                У меня данный метод работает безотказно начиная с версии 1.6.5.
                Сейчас 1.8.4, БД MySql - полёт нормальный.
                Но проблема не только с Web мордочкой, а ещё с рассылками уведомлений на русском, а тут уже PHP ни при чём.
                Last edited by dima_dm; 03-03-2011, 19:18.

                Comment

                • Horror777
                  Member
                  • Jun 2009
                  • 36

                  #9
                  Замечено, что как в базу запишешь, так с базы и вытащишь.
                  Прошу постестировать способ решения на отправке уведомлений, так как сам такой возможности пока не имею.

                  Comment

                  • dima_dm
                    Senior Member
                    • Dec 2009
                    • 2697

                    #10
                    Originally posted by Horror777
                    Замечено, что как в базу запишешь, так с базы и вытащишь.
                    Прошу постестировать способ решения на отправке уведомлений, так как сам такой возможности пока не имею.
                    Я думаю, что у вас вылезут ещё проблемы с perf_counter, при опросе русскоязычной Windows.

                    Comment

                    • Horror777
                      Member
                      • Jun 2009
                      • 36

                      #11
                      Большое спасибо dima_dm, не буду голословен - столкнусь с проблемой буду знать куда копать =)

                      Comment

                      • FackOut
                        Junior Member
                        • Apr 2013
                        • 1

                        #12
                        Originally posted by dima_dm
                        Сегодня перенёс свою систему на Mysql 5.1.52 и опять полезли проблемы с русским текстом. Как я её решил:

                        mysql> alter database zabbix collate utf8_bin;
                        Query OK, 1 row affected (0.00 sec)
                        Он у меня на этом этапе ошибку выдает

                        ERROR 1 (HY000): Can't create/write to file './zabbix/db.opt' (Errcode:2)

                        Нету у меня такого файла db.opt

                        Comment

                        • dima_dm
                          Senior Member
                          • Dec 2009
                          • 2697

                          #13
                          Originally posted by FackOut
                          Он у меня на этом этапе ошибку выдает

                          ERROR 1 (HY000): Can't create/write to file './zabbix/db.opt' (Errcode:2)

                          Нету у меня такого файла db.opt
                          Читайте
                          http://dev.mysql.com/doc/refman/5.5/...ot-create.html

                          Comment

                          • YuraI
                            Member
                            • Jun 2012
                            • 35

                            #14
                            Originally posted by dima_dm
                            Но проблема не только с Web мордочкой, а ещё с рассылками уведомлений на русском, а тут уже PHP ни при чём.
                            Здравствуйте!
                            А не подскажете что именно нужно править в db.inc.php. А то з БД вроде уже норма, но все равно "знаки вопроса" в вэб морде не пропали.
                            Спасибо!

                            Comment

                            • A.Soloviev
                              Junior Member
                              • Feb 2014
                              • 27

                              #15
                              Версионность:

                              Zabbix server v2.2.1;
                              mysql Ver 14.14 Distrib 5.1.71, for redhat-linux-gnu (i386) using readline 5.1
                              Apache/2.2.15 (Unix)

                              У меня похожая проблема, на картах и в менюшках Web интерфейса забикса русские буквы отображаются корректно, но при просмотре истории итемов, русские буквы отображаются знаками вопроса (???).

                              Все что упоминалось кажется перепробовал

                              Comment

                              Working...