Сортировка MySQL-данных и настройки сервера

dim-dem

Новичок
Сортировка MySQL-данных и настройки сервера

К базе делаю стандартный MySQL-запрос:

SELECT * FROM `p_name` ORDER BY `p_text`

Выводит неправильно, таким образом:

Сноуборд
Семейный отдых
Аэробика
Атлетическая гимнастика
Армрестлинг
Академическая гребля
Акробатика
Айкидо
Автомотоспорт
Шашки
Шахматы

Может ли зависеть сортировка MySQL-данных от настроек сервера
 

pdi

Новичок
Может, если кодировка таблицы, в которой хрянятся данные, не совпадает с кодировкой самих данных.

Попробуй проставить кодировку таблицы в cp1251, если по полю p_text существует индекс, то его необходимо пересоздать.
 

dim-dem

Новичок
Пожалуй ты прав,
а подскажешь каким запросом можно изменить кодировку всех таблиц в базе?
 

dim-dem

Новичок
Нашел:
ALTER DATABASE `name` DEFAULT CHARACTER SET cp1251


Но не помогло, странно, что еще можно придумать...
 

pdi

Новичок
SHOW CREATE TABLE `p_name`
выложи...

Посмотрим, что там у тебя :)
 

pdi

Новичок
Попробуй
ALTER TABLE `p_name` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci

Кодировку сравнения надо тоже указать. Должно сработать, если MySQL >=4.1.*
 

dim-dem

Новичок
Автор оригинала: pdi
Попробуй
ALTER TABLE `p_name` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci

Кодировку сравнения надо тоже указать. Должно сработать, если MySQL >=4.1.*
В cp1251_general_ci перевело, но все равно нормально не сортирует
 

dim-dem

Новичок
а может можно как-то через .htaccess изменить
[mysqld] default-character-set=cp1251
 

SiMM

Новичок
> а может можно как-то через .htaccess изменить
Нет. Да и какое отношение Апач имеет к MySQL?
PS: ты бы в начале с версией MySQL-то определился бы чтоли...
 

dim-dem

Новичок
Хостер написал мне:
Основная кодировка сервера базы данных koi8u.
Ваши скрипты сохраняют данные в cp1251. И соответвенно сервер на лету
перекодирует данные, но на сервере данные хранятся в koi8u из-за этого
сортировка происходит некорректно.

Поэтому правильным решением в данной ситуации было бы:
сдампить базу
удалить все таблицы
выполнить запрос
"alter database name CHARACTER SET cp1251;"
просмотреть и удалить из дампа все упоминания о кодировке koi8
влить дамп базы обратно на сервер.

Возможно сработает следующий вариант:
на текущий момент для таблицы p_name установлена кодировка
cp1251, если удалить из нее все старые записи и разместить их по новому, то
записи будут храниться уже в кодировке cp1251 и соответственно правильно
сортироваться.

Я уже все это перепробовал, все равно некорректно сортитует :(

Автор оригинала: SiMM
ты бы в начале с версией MySQL-то определился бы чтоли...
4.1.15
 

Steamroller

Новичок
Я уже все это перепробовал, все равно некорректно сортитует
Если базу уже привел к нужному виду - то в клиенте после коннекта попробуй вызвать set names cp1251;.
Если не сработает - значит базу все же не привел к нужному виду.
 

Profic

just Profic (PHP5 BetaTeam)
dim-dem
show create table table_name в студию.
После всех манипуляций уже непонятно какая кодировка для таблиц у муськи.
 

dim-dem

Новичок
Автор оригинала: Profic
dim-dem
show create table table_name в студию.
После всех манипуляций уже непонятно какая кодировка для таблиц у муськи.
SQL-запрос: SHOW CREATE TABLE p_name;

CREATE TABLE `p_name` (\n `podz_id` int(4) NOT NULL auto_increment,\n `zaved_id` int(4) NOT NULL default '0',\n `podzavedenie` varchar(30) NOT NULL default '',\n PRIMARY KEY (`podz_id`)\n) ENGINE=MyISAM DEFAULT CHARSET=cp1251
 
Сверху