LINUX.ORG.RU
решено ФорумAdmin

ошибка заливки базы mysql

 , ,


0

1

Замучался уже.
Собственно делаю
cat openfire_mysql.sql | mysql openfire
ругается:
ERROR 1071 (42000) at line 126: Specified key was too long; max key length is 767 bytes

ок. нагугливаем, правим значение
jid VARCHAR(1024) NOT NULL,
(62 строка) до 255.
грохаем&создаём базу drop database openfire;

всё равно ругается!
ERROR 1071 (42000) at line 126: Specified key was too long; max key length is 767 bytes

Собственно, вот 126 строка:

CREATE TABLE ofExtComponentConf (

ничего вразумительного. СОС.

★★★★★

Последнее исправление: darkenshvein (всего исправлений: 2)

Ответ на: комментарий от Deleted

ALTER TABLE `mytable` ADD UNIQUE ( column1(15), column2(200) );

и какую TABLE мне ALTER? я не знаю.
догадываюсь, что
ofExtComponentConf
хотя jid VARCHAR(255) находится в таблице
ofRoster
не совсем понятно, короче

darkenshvein ★★★★★
() автор топика
Ответ на: комментарий от Deleted

до точки с запятой:

CREATE TABLE ofExtComponentConf (
  subdomain             VARCHAR(255)    NOT NULL,
  wildcard              TINYINT         NOT NULL,
  secret                VARCHAR(255),
  permission            VARCHAR(10)     NOT NULL,
  PRIMARY KEY (subdomain)
);
darkenshvein ★★★★★
() автор топика
Ответ на: до точки с запятой: от darkenshvein

PRIMARY KEY (subdomain)

Значит дело в этом столбце. Попробуй размер уменьшить до 191, либо явно указать какую-нибудь однобайтную кодировку.

Deleted
()
Ответ на: комментарий от darkenshvein

ERROR 1071 (42000) at line 134: Specified key was too long; max key length is 767 bytes

ххах. теперь тут встряло.
вот этот кусок:

CREATE TABLE ofRemoteServerConf (
  xmppDomain            VARCHAR(255)    NOT NULL,
  remotePort            INTEGER,
  permission            VARCHAR(10)     NOT NULL,
  PRIMARY KEY (xmppDomain)
);/
уменьшать значение xmppDomain до 191 ?

darkenshvein ★★★★★
() автор топика
Последнее исправление: darkenshvein (всего исправлений: 1)
Ответ на: комментарий от darkenshvein

теперь тут:

CREATE TABLE ofSASLAuthorized (
username VARCHAR(64) NOT NULL,
principal TEXT NOT NULL,
PRIMARY KEY (username, principal(200))
);

блин, кто создавал этот файл разметки, в этом блоке даже 255 нет :(

darkenshvein ★★★★★
() автор топика
Ответ на: комментарий от darkenshvein

В принципе, если в этих таблицах не планируется данных в юникоде, то где-нибудь в начале дампа можно было поставить SET NAMES ascii. Скорее всего авторы не думали, что у кого-то будет UTF8 по дефолту.

Deleted
()
Ответ на: теперь тут: от darkenshvein

видимо раньше то было в myisam. а ты пихаешь в innodb. Обнови mysql. В послдених версиях ключ сделали значительно больше.

anonymous
()
Ответ на: комментарий от darkenshvein

кстати, в похожих темах рекомендуют сделать innodb_large_prefix = ON, и это походу будет лучшим решением. Если у тебя mysql не старше 5.5, конечно.

Deleted
()
Ответ на: комментарий от Deleted

Скорее всего авторы не думали, что у кого-то будет UTF8 по дефолту.

Скорее всего авторы просто не думали. varchar-ы дык еще и в составных ключах...это конечно супер.

anc ★★★★★
()

ERROR 1071 (42000) at line 126: Specified key was too long; max key length is 767 bytes

Набираем указанную строчку в Гугле, идем по первой же ссылке и получаем ответ :)

https://stackoverflow.com/questions/1814532/1071-specified-key-was-too-long-m...

Число 767 вылезает вот отсюда:

https://dev.mysql.com/doc/refman/8.0/en/create-index.html#create-index-column...

Column Prefix Key Parts

For string columns, indexes can be created that use only the leading part of column values, using col_name(length) syntax to specify an index prefix length ...
Prefix support and lengths of prefixes (where supported) are storage engine dependent. For example, a prefix can be up to 767 bytes long for InnoDB tables that use the REDUNDANT or COMPACT row format...

vinvlad ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.