Форум программистов CodeGuru
16 Январь 2018, 23:22:15 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: TinyBlob VS Varchar - Что выбрать?  (Прочитано 16433 раз)
0 Пользователей и 1 Гость смотрят эту тему.
XBuddy
Новичок
*
Офлайн Офлайн

Сообщений: 9


Бойсо меня


Просмотр профиля
« : 21 Декабрь 2007, 01:01:29 »

В общем не так давно столкнулся с интересным фактом работы MySQL. У меня была база город в UTF-8 ну и как порядочный кодер создал табличку с полями varchar кодировки utf8 и попытался импортировать в нее мой дамп городов. После определенного количества попыток и впустую потраченного времени наконец удалось добиться того чтобы в базе оказались корректные данные в UTF-8 кодировке. Все бы ничего но потом начались проблемы с сортировкой. При выборке городов из базы я сортировал по имени, они конечно сортировались, но зато в каком порядке!!!:) Сначала шла буквы К,Л,М,Н потом прыгало на А,Б,В,Г,Д в общем порядок был, но был непонятный. Долго маялся и мучался пока не перевел данные из varchar в tinyblob. Все проблемы на этом закончились, появился нормальный порядок в сортировке и в общем все ок. Смущает только факт хранения данных в блобе. Может у меня руки кривые и я до ума это так довести не могу? Непонимающий Если кто то сталкивался с таким, скажите свое авторитетное мнение
Записан
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #1 : 22 Декабрь 2007, 00:00:33 »

Да, попробовал сегодня на работе - действительно глюки.
Что заметил - у меня "д" перед "г" вылезала.

Цитировать
ну и как порядочный кодер создал табличку с полями varchar кодировки utf8
Оно точно utf8 ?
Создавалось по типу:

Код:
CREATE TABLE YourTableName
(
    column1 VARCHAR(что-то) CHARACTER SET utf8
);
?

А то хотел предложить:
Код:
ALTER TABLE NameOfYourTable CONVERT TO CHARACTER SET utf8;
Улыбка

Да, кстати, там еще при создании можно COLLATION указывать как то так:
Код:
CREATE TABLE YourTableName
(
    column1 VARCHAR(что-то) CHARACTER SET utf8 COLLATION utf8
);

Но это, имхо, работает, если версия сервера 4.1 и выше.

Ну и еще можно попробовать перед исполнением основных запросов делать:
Код:
SET NAMES utf8;
SET CHARACTER SET utf8;
Это опять же если версия сервера 4.1 и выше.

Записан

XBuddy
Новичок
*
Офлайн Офлайн

Сообщений: 9


Бойсо меня


Просмотр профиля
« Ответ #2 : 22 Декабрь 2007, 03:20:43 »

Ну да по типу того и создавалось:), добиться хоть какого то эффекта от SET NAMES или прочих типа SET COLLATION и т.д. не вышло. Так то данные ведь все таки храняца в utf-е, поскольку мускул выдает их корректно но сортирует таки через задницу. Я так понимаю проблема в том что при сотрировке varchar данных мускул пляшет по каким нибудьь таблицам кодировок, а при блобе наверное просто по числам. А по скольку чаще всего в кодировках коды букв идут в нормальном порядке то и сортирует корректно. Только это все мои бредовые мысли:), просто как то заинтересовала эта тема. Версия была 4.1.8.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines Valid XHTML 1.0! Valid CSS!