powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Длина индекса
17 сообщений из 17, страница 1 из 1
Длина индекса
    #37555203
stanlee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть поле varchar длиной 500
и на нем висит уникальный индекс

и есть два сервера
один на центосе 5.5.18
другой на фре 5.5.15

на фре индекс работает
на линуксе не дает создастся, говорит Specified key was too long; max key length is 1000 bytes

Случаем в конфиге это не настраивается? если да, то какой параметр?
...
Рейтинг: 0 / 0
Длина индекса
    #37555208
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stanlee,

кодировки на серверах разные. На одном utf8 (500 * до 3 байт = 1500 байт > 1000 байт), на другом latin1 (500 * 1 = 500 байт < 1000 байт).
...
Рейтинг: 0 / 0
Длина индекса
    #37555210
stanlee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не, на обоих утф
...
Рейтинг: 0 / 0
Длина индекса
    #37555215
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stanlee, тогда кто-то вам во фре злонамеренно ПРОПАТЧИЛ MYSQL.
если utf8 действительно используется, то сервер должен ошибку выдавать.

если логика приложения позволяет, вы можете указать ключ уникальный УЖЕ в первых 255 символах - add unique index index_name (column1 (255))
...
Рейтинг: 0 / 0
Длина индекса
    #37555257
RXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stanlee,

Проверка кодировок:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SHOW VARIABLES LIKE 'character\_set\_%';
SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME
  FROM information_schema.SCHEMATA
  WHERE SCHEMA_NAME = 'test';
SELECT TABLE_COLLATION
  FROM information_schema.TABLES
  WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME = 'table'; 
SELECT CHARACTER_SET_NAME, COLLATION_NAME
  FROM information_schema.COLUMNS
  WHERE TABLE_SCHEMA = 'test'  AND TABLE_NAME = 'table' AND COLUMN_NAME = 'column';
...
Рейтинг: 0 / 0
Длина индекса
    #37555715
stanlee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
центос

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


фря


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


ничего не патчил, все стоит из портов
...
Рейтинг: 0 / 0
Длина индекса
    #37555764
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stanlee, может show create table покажешь на фре? странно все это
...
Рейтинг: 0 / 0
Длина индекса
    #37557238
stanlee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CREATE TABLE `name` (
`ID` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`RUTEXT` VARCHAR(255) NOT NULL,
`ENTEXT` VARCHAR(255) NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE INDEX `RUTEXT` (`RUTEXT`)
)
COLLATE='utf8_general_ci'
ENGINE=MyISAM;

Все законно )
...
Рейтинг: 0 / 0
Длина индекса
    #37557243
stanlee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЭЭЭ

это с центоса
на фре VARCHAR(500)
...
Рейтинг: 0 / 0
Длина индекса
    #37557246
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мне казалось, что show create table показывает в конце определения таблицы еще и DEFAULT CHARSET , даже если оно не указано явно. точно ничего не правил в выводе?

создай еще одну таблицу для теста, которая точно в utf8 :

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE TABLE uktest(
  a INT(11) NOT NULL AUTO_INCREMENT,
  column1 VARCHAR(500) DEFAULT NULL,
  PRIMARY KEY (a),
  UNIQUE INDEX UK_uktest_column1 (column1)
)
ENGINE = INNODB
AUTO_INCREMENT = 1
CHARACTER SET utf8
COLLATE utf8_general_ci;


неужели исполнится ?
...
Рейтинг: 0 / 0
Длина индекса
    #37557250
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вотоноче :

http://dev.mysql.com/doc/refman/5.5/en/innodb-parameters.html#sysvar_innodb_large_prefix innodb_large_prefix
Enable this option to allow index key prefixes longer than 767 bytes (up to 3072 bytes),
...
Рейтинг: 0 / 0
Длина индекса
    #37557254
stanlee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
netwind, у меня сто лет все в утф только

табличка создалась и запрос прошел

Код: plaintext
1.
2.
3.
4.
INSERT INTO `uktest` (`a`, `column1`) VALUES (1, 'текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_
текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_
текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_
текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст_текст');



а насчет innodb_large_prefix
так то же innodb
и у меня innodb отключено
...
Рейтинг: 0 / 0
Длина индекса
    #37557257
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а, не заметил myisam.
ну тогда других вариантов нет : когда ставишь из портов , там накладывается всякая гадость. наверняка у них в портах какое-нибудь приложение не заработало и они договорились сделать патч.
перестаь из исходников mysql на фре и у тебя нигде не будет работать уникальный индекс, как это и должно быть в теории.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Длина индекса
    #39044776
Полуламер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пршу модератора извинить за поднимание старой темы, просто проблема та же самая - исполуется локально MariaDB 10, пытаюсь сгенерировать простейшую таблицу с помощью HeidiSQL:

Код: sql
1.
2.
3.
4.
5.
6.
CREATE TABLE `test` (
	`id` VARCHAR(255) NOT NULL,
	PRIMARY KEY (`id`)
)
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB;



Постоянно получаю ошибку:

авторSQL Fehler (1709): Index column size too large. The maximum column size is 767 bytes.

Параметр innodb_large_prefix в конфиге прописан, если посмотреть командой

Код: sql
1.
SHOW VARIABLES LIKE 'innodb_large_prefix' 



то показывает, что ON . В чем же тогда дело, не подскажете?
...
Рейтинг: 0 / 0
Длина индекса
    #39044781
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://dev.mysql.com/doc/refman/5.5/en/innodb-parameters.html#sysvar_innodb_large_prefix Enable this option to allow index key prefixes longer than 767 bytes (up to 3072 bytes), for InnoDB tables that use the DYNAMIC and COMPRESSED row formats. (Creating such tables also requires the option values innodb_file_format=barracuda and innodb_file_per_table=true.)Это все выполняется?
...
Рейтинг: 0 / 0
Длина индекса
    #39044820
Полуламер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, эти установки не прописаны. А без них ничего не получится, верно?
...
Рейтинг: 0 / 0
Длина индекса
    #39044854
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Полуламер,

Верно.
Впрочем, установки для большинства случаев полезные, так что не вижу, почему бы их не сделать.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Длина индекса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]