Задавайте вопросы, мы ответим
Вы не зашли.
База на сеносе 5.5,
[root@sunport ~]# rpm -qa | grep mysql
mysql-devel-5.0.77-4.el5_4.2
mysql-connector-odbc-3.51.26r1127-1.el5
mysql-test-5.0.77-4.el5_4.2
mysql-5.0.77-4.el5_4.2
mysql-server-5.0.77-4.el5_4.2
mysql-bench-5.0.77-4.el5_4.2
php-mysql-5.1.6-27.el5
C локалью ничего не делалось, как поставил систему так и работаю в ней.
[root@sunport ~]# locale
LANG=ru_RU.UTF-8
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=
В терминале русские пишутся, но они как то не нужны там были. Но когда пытаюсь через терминал в запросе использовать русские, ничего не получается , каракули, постояно вместо букв. В редакторе VI пишу и русские и английские, проблем нет.. Вопрос в другом, это общая картина.
mysql> select * from kontra where kontora like '%Щ�АО%';
Empty set (0.00 sec)
mysql> select * from kontra where kontora like '%������%';
Empty set (0.00 sec)
mysql> select * from kontra where kontora like '%Щ�ОАО%';
Empty set (0.00 sec)
mysql> ну и дела.
C английскими все нормально.
mysql> select * from kontra where kontora like '%ne%';
+-----+---------+------+-------------+-------+------+-------------+-------+-----------+----------+---------+------+---------+-------------+
| id | kontora | town | dolzhnost_1 | fio_1 | fax | dolzhnost_2 | fio_2 | telwork_2 | telsot_2 | email_2 | site | bg_cell | shift_color |
+-----+---------+------+-------------+-------+------+-------------+-------+-----------+----------+---------+------+---------+-------------+
| 173 | New | | | | | | | | | | | | |
+-----+---------+------+-------------+-------+------+-------------+-------+-----------+----------+---------+------+---------+-------------+
1 row in set (0.00 sec)
mysql>
ПРОБЛЕМА: в том, что я хочу поиск без учета регистра, если в базе запись ОАО , то при поиске ОАО все нормально, а если я передам оао, то уже ничего не находит.
Пробовал я и
Отредактированно yok (19.04.2012 09:41:19)
Неактивен
Какая кодировка таблиц (и collation в том числе)?
Какие значения переменных:
character_set_client
character_set_connection
character_set_database
character_set_filesystem
character_set_results
character_set_server
character_set_system
collation_connection
collation_database
collation_server
Эти значения и дадут ответы на все подобные вопросы.
Неактивен
Сразу после подключения к мускулу выполняю запросы:
mysql> show variables like "character_set_client";
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| character_set_client | utf8 |
+----------------------+-------+
1 row in set (0.02 sec)
mysql> show variables like "character_set_connection";
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| character_set_connection | utf8 |
+--------------------------+-------+
1 row in set (0.00 sec)
mysql> show variables like "character_set_database";
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| character_set_database | utf8 |
+------------------------+-------+
1 row in set (0.00 sec)
mysql> show variables like "character_set_filesystem";
+--------------------------+--------+
| Variable_name | Value |
+--------------------------+--------+
| character_set_filesystem | binary |
+--------------------------+--------+
1 row in set (0.01 sec)
mysql> show variables like "character_set_result";
Empty set (0.00 sec)
mysql> show variables like "character_set_results";
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| character_set_results | utf8 |
+-----------------------+-------+
1 row in set (0.00 sec)
mysql> show variables like "character_set_server";
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| character_set_server | utf8 |
+----------------------+-------+
1 row in set (0.00 sec)
mysql> show variables like "character_set_system";
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| character_set_system | utf8 |
+----------------------+-------+
1 row in set (0.00 sec)
mysql> show variables like "collation_connection";
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
+----------------------+-----------------+
1 row in set (0.00 sec)
mysql> show variables like "collation_database";
+--------------------+-----------------+
| Variable_name | Value |
+--------------------+-----------------+
| collation_database | utf8_general_ci |
+--------------------+-----------------+
1 row in set (0.00 sec)
mysql> show variables like "collation_server";
+------------------+-----------------+
| Variable_name | Value |
+------------------+-----------------+
| collation_server | utf8_general_ci |
+------------------+-----------------+
1 row in set (0.00 sec)
Но вчера я добавлял в файл выделенные строки, но все равно поиск без учета регистра для русских не работает.
[root@sunport ~]# cat /etc/my.cnf
[mysqld]
default-character-set=utf8
character-set-server=utf8
collation-server=utf8_general_ci
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[client]
default-character-set=utf8[/b]
скажите пожалуйста а в какой таблице эти значения посмотреть и для какой базы они соответственно, некоторые я так понял можно определить на уровень базы. Или где почитать можно русскую инфо.
Да и в каждой таблице для поля стоит collation
[root@sunport ~]# mysqlshow ci kontra -uroot -pkdxsr
Database: ci Table: kontra
+-------------+--------------+-----------------+------+-----+---------+-------+---------------------------------+---------+
| Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment |
+-------------+--------------+-----------------+------+-----+---------+-------+---------------------------------+---------+
| id | mediumint(9) | | NO | PRI | | | select,insert,update,references | |
| kontora | varchar(100) | utf8_general_ci | YES | | | | select,insert,update,references | |
| town | varchar(30) | utf8_general_ci | YES | | | | select,insert,update,references | |
| dolzhnost_1 | varchar(20) | utf8_general_ci | YES | | | | select,insert,update,references | |
| fio_1 | varchar(60) | utf8_general_ci | YES | | | | select,insert,update,references |
Отредактированно yok (20.04.2012 09:48:14)
Неактивен
Чудес не бывает.
Где-то что-то вы не то смотрели или умолчали.
Регистрозависимый поиск в utf8 может быть только при использовании collation = utf8_binary.
При использовании utf8_general поиск регистроНЕзависимый (поэтому он и назван _ci).
Откройте таблицу в phpmyadmin-e там нагляднее все видно.
Неактивен