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

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

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

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

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

если логика приложения позволяет, вы можете указать ключ уникальный УЖЕ в первых 255 символах - add unique index index_name (column1 (255))
...
Рейтинг: 0 / 0
02.12.2011, 07:38:53
    #37555257
RXL
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
02.12.2011, 11:50:59
    #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
02.12.2011, 12:05:01
    #37555764
netwind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Длина индекса
stanlee, может show create table покажешь на фре? странно все это
...
Рейтинг: 0 / 0
03.12.2011, 02:12:32
    #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
03.12.2011, 02:25:14
    #37557243
stanlee
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Длина индекса
ЭЭЭ

это с центоса
на фре VARCHAR(500)
...
Рейтинг: 0 / 0
03.12.2011, 02:41:11
    #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
03.12.2011, 02:47:14
    #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
03.12.2011, 02:56:53
    #37557254
stanlee
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Длина индекса
netwind, у меня сто лет все в утф только

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

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



а насчет innodb_large_prefix
так то же innodb
и у меня innodb отключено
...
Рейтинг: 0 / 0
03.12.2011, 03:14:37
    #37557257
netwind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Длина индекса
а, не заметил myisam.
ну тогда других вариантов нет : когда ставишь из портов , там накладывается всякая гадость. наверняка у них в портах какое-нибудь приложение не заработало и они договорились сделать патч.
перестаь из исходников mysql на фре и у тебя нигде не будет работать уникальный индекс, как это и должно быть в теории.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
07.09.2015, 12:05:28
    #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
07.09.2015, 12:10:29
    #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
07.09.2015, 12:30:39
    #39044820
Полуламер
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Длина индекса
Нет, эти установки не прописаны. А без них ничего не получится, верно?
...
Рейтинг: 0 / 0
07.09.2015, 13:01:07
    #39044854
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Длина индекса
Полуламер,

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


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