Автор Тема: Кирилица в mysql 3.23.59  (Прочетена 2099 пъти)

sunhater

  • Напреднали
  • *****
  • Публикации: 329
    • Профил
Кирилица в mysql 3.23.59
« -: Apr 10, 2006, 17:55 »
Проблема ми е, че когато има кирилица в базата, при SELECT заявка с ORDER BY не ми подрежда редовете по азбучен ред... Има ли лек (без ъпдейт на MySQL)?

MySQL 3.23.59
FreeBSD 4.8
Активен

rat

  • Напреднали
  • *****
  • Публикации: 266
    • Профил
Кирилица в mysql 3.23.59
« Отговор #1 -: Apr 10, 2006, 20:20 »
До колкото си спомням има лек .
Трябва да сложиш в my.cnf нщо от сорта на
server-encoding=windows-1251

Провери в документацията за точния синтаксис.

  • Гост
Кирилица в mysql 3.23.59
« Отговор #2 -: Apr 10, 2006, 20:45 »
аз ползвам mysql-3.23.49-3 и имах същия проблем.
това е моят конфиг
cat my.cnf

Примерен код

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
default-character-set=cp1251

[mysql.server]
user=mysql
basedir=/var/lib

[safe_mysqld]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid



Обаче има една Излючителна важна подробност!!! Ако имаш Index  (от преди да добавиш default-character-set=cp1251) към някое поле на кирилица, ще продължава да връща неправилно сортиране. или само на пръв поглед ще изглежда, че е правилно. например може да работи правилно с първите 'абв', обаче някъде към 'ч' ще се обърка.

Ако забележиш такова поведение трябва да дропнеш индеха и да го създадеш отново.
Активен

sunhater

  • Напреднали
  • *****
  • Публикации: 329
    • Профил
Кирилица в mysql 3.23.59
« Отговор #3 -: Apr 12, 2006, 11:46 »
Лошото е, че нямам root права и ще трябва да моля админа да редактира конфиг файла. Иначе базата няма индекси. Благодаря за отговорите.



Активен

rat

  • Напреднали
  • *****
  • Публикации: 266
    • Профил
Кирилица в mysql 3.23.59
« Отговор #4 -: Apr 13, 2006, 10:36 »
Сле дкато си стигнал до админа по-добре да го помолиш да мине на mysql-4.1.x
Лошото е че като си промениш конфига така няма да ти работо коректно сортирането на Latin1 '<img'>
В новите версии на mysql проблема е решен доста добре. МОжеш да указваш colation на всяка база/колона от таблицата/таблица.

nov_chovek

  • Напреднали
  • *****
  • Публикации: 536
  • Distribution: Ubuntu 8.10 по принуда
  • Window Manager: Gnome
    • Профил
    • WWW
Кирилица в mysql 3.23.59
« Отговор #5 -: Apr 17, 2006, 17:01 »
Ако щете вярвайте, но отворих форума преди малко ,за да попитам за точно същия въпрос, за който е съдадена тази тема, мерси при мен стана '<img'>)
Активен

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Кирилица в mysql 3.23.59
« Отговор #6 -: Apr 17, 2006, 22:37 »
Аз този проблем го реших временно чрез:
Примерен код
order by BINARY




Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

Naka

  • Напреднали
  • *****
  • Публикации: 3397
    • Профил
Кирилица в mysql 3.23.59
« Отговор #7 -: Apr 21, 2006, 11:51 »
Относно съществуващ Index към кирилско поле от преди да се зададе кодова таблица. Намерих си документацията и past-вам тук. На някой може да му е от полза за в бъдеще.

Mysql дава два начина за поправяне на индех. 1-вия е от външна команда
myisamchk -r -q --set-character-set=cp1251 word_index
но е недостатък че ще промени всички индехи и БАЗАТА трябва ДА Е СПРЯНА. не го ползвайте.
2.-рия е чрез конзолата на Mysql: DROP INDEX - CREATE INDEX и е напълно безопасен.

например:
таблицата се казва : word_index
полето се казва: word
и индеха се казва: word


Примерен код

CREATE TABLE word_index (
id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
word VARCHAR(32) NOT NULL,
KEY word (word)
);
 
#povreden(neprawilen) index sled smiana na kodowata tablica
# QUICK - will try to do a REPAIR of only the index tree
# syshtoto kato: myisamchk -r -q --set-character-set=cp1251 word_index

1.вариант (недостатък  трябва да е спряна DB и ! ще промени всички index-и в таблицата  
myisamchk -r -q --set-character-set=cp1251 word_index

2.вараинт (за препоръчване. само там където има кирилица)
DROP INDEX word on word_index;
CREATE INDEX word on word_index (word);





Активен

Perl - the only language that looks the same before and after encryption.

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
MySql малък проблем.
Хардуерни и софтуерни проблеми
Marto 6 4447 Последна публикация Sep 25, 2002, 12:32
от
mysql въпрос
Настройка на програми
dumi 0 1363 Последна публикация Oct 08, 2003, 06:42
от dumi
Perl + CGI,DBI + Mysql ili PHP + Mysql
Общ форум
jica 3 5145 Последна публикация Sep 07, 2004, 17:02
от jica
Mysql проблем със стартирането(mysql.sock missing)
Настройка на програми
coveka 6 6961 Последна публикация Mar 01, 2008, 22:02
от coveka
Mysql: can't connect to local mysql server
Настройка на програми
wonder 1 5340 Последна публикация Mar 16, 2008, 01:17
от neter