ФорумРазработкаБазы данных → MySQL ошибка #1071

MySQL ошибка #1071

  • Tekuto

    Сообщения: 1147 Репутация: N Группа: Адекваты

    Spritz 3 марта 2012 г. 21:50

    Создаю таблицу в Денвере через phpmyadmin. Кодировка utf-8
    Задаю некоторым полям varchar(255) - title и slug

    В итоге получаю

    CREATE TABLE `test`.`news` (
    `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `title` VARCHAR( 255 ) NOT NULL ,
    `content` LONGTEXT NOT NULL ,
    `slug` VARCHAR( 255 ) NOT NULL ,
    `category` INT( 2 ) NOT NULL ,
    `date` DATETIME NOT NULL ,
    UNIQUE (
    `title` ,
    `slug`
    )
    ) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci;

    #1071 - Specified key was too long; max key length is 1000 bytes


    Что не так делаю???
    Спустя 76 сек.
    какой ключ превышает длину?
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 3 марта 2012 г. 21:51, спустя 29 секунд

    Tekuto, сделай поля char, а не varchar, попробуй, возможно получится
    Сапожник без сапог
  • Tekuto

    Сообщения: 1147 Репутация: N Группа: Адекваты

    Spritz 3 марта 2012 г. 22:01, спустя 10 минут 18 секунд


    Tekuto, сделай поля char, а не varchar, попробуй, возможно получится

    Такая же ерунда. Снова #1071 )))
    Спустя 284 сек.
    Убрал один уникальный ключ и сработало.
    UNIQUE (
    `slug`
    )

    Потом для title снова задал, как и хотел сначала.

    Непонятно :D
    Косяк phpmyadmin? Или в mysql так надо?
  • Tekuto

    Сообщения: 1147 Репутация: N Группа: Адекваты

    Spritz 3 марта 2012 г. 22:51, спустя 50 минут 2 секунды

    #1071 :D

    Может у меня в денвере косяк какой))) хотя я его как установил, так ни разу не трогал)))
  • Tekuto

    Сообщения: 1147 Репутация: N Группа: Адекваты

    Spritz 3 марта 2012 г. 23:29, спустя 37 минут 51 секунду

    Сработал.

    С 200 и 134 (итого 334) уже не срабатывает. Удаляю один ключ UNIQUE (например, slug). Срабатывает и с 200 - 134 (итого 334) , и с 255 - 255 (итого 510).
    почему так?
    Спустя 44 сек.
    Ок. Все понял. Спасибо)
    Спустя 170 сек.
    Удаляю ключ, значит один UNIQUE - итого 255.

    Но как быть тогда в том случае: я ведь снова добавляю UNIQUE после создания таблицы.
    А значит опять 2 ключа. И значит сумма снова больше 333.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 3 марта 2012 г. 23:32, спустя 3 минуты 14 секунд

    http://trac.edgewall.org/ticket/3673

    и правда, для ютф идет ограничение в 333 "буквы".

    Внимание, вопрос. НАХУЙ ТЕБЕ ДВОЙНОЙ КЛЮЧ ПО slug, title  ПОЛЯМ?

    Может тебе надо ДВА разных ключа? Или вообще ОДИН(slug)? это как то логичнее..
    Сапожник без сапог
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 3 марта 2012 г. 23:33, спустя 1 минуту 19 секунд

    Что не так делаю??? Спустя 1 минуту 16 секунд добавил какой ключ превышает длину?

    в юникоде varchar 255 занимает 768 байт, т.е. под каждый символ резервируется по 3 байта. соответственно, составной ключ из двух варчаров требует 1536 байт. лучшее, что ты можешь сделать в этой ситуации - ограничить длину каждого поля в ключе (т.е. индекс будет не уникальным, а уникальность придётся проверять скриптом).
    Спустя 44 сек.
    НАХУЙ ТЕБЕ ДВОЙНОЙ КЛЮЧ ПО slug, title  ПОЛЯМ?

    ему нужен юник же
    не всё полезно, что в swap полезло
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 3 марта 2012 г. 23:57, спустя 23 минуты 32 секунды

    slug, id в таком случае не?

    втро уже примари кей, если его добавить - уник кей бесполезен, ибо второе значнеие всегда уникально)
    Сапожник без сапог
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 4 марта 2012 г. 0:26, спустя 28 минут 46 секунд

    вы такие жалкие
    Сапожник без сапог
  • Tekuto

    Сообщения: 1147 Репутация: N Группа: Адекваты

    Spritz 4 марта 2012 г. 0:31, спустя 5 минут 15 секунд

    Sinkler, дело было не в нахуя юниккей(слаг, тайтл).
    Могло быть, что угодно. Могут быть несколько юниккей - это не возбраняется.
    Не спорю, что id скорее излишне. Я первоначально от него и хотел избавиться -
    слаг первичный, а тайтл уникальным. Но сделал так. И в итоге #1071.
    столкнулся и не знал про ограничение: мне непонятно было. Спасибо всем - помогли.
    Так что не нервничай)))

    А вообще я предполагаю, что у меня будет первичный и 2 уникальных ключа в других таблицах.
    Уникальные ключи нужны мне только для того, чтобы добавлять значения, не проверяя их на уникальность.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 4 марта 2012 г. 0:32, спустя 1 минуту 7 секунд

    Уникальные ключи нужны мне только для того, чтобы добавлять значения, не проверяя их на уникальность.

    ЛОЛ, не только тебе для этого :D
    Сапожник без сапог
  • Tekuto

    Сообщения: 1147 Репутация: N Группа: Адекваты

    Spritz 4 марта 2012 г. 0:32, спустя 18 секунд

    блеать, вот вы строчите. я не успеваю отвечать!)))
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 4 марта 2012 г. 0:33, спустя 29 секунд

    я не успеваю отвечать!)))

    а ты кто? тут дядьки общаются, не мешай
    Сапожник без сапог
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 4 марта 2012 г. 0:33, спустя 19 секунд

    не на что ему

    в смысле не на что?
  • Tekuto

    Сообщения: 1147 Репутация: N Группа: Адекваты

    Spritz 4 марта 2012 г. 0:33, спустя 15 секунд

    ЛОЛ, не только тебе для этого :D

    ну понятно, что не только мне) а почему тогда спрашиваете?)))

Пожалуйста, авторизуйтесь, чтобы написать комментарий!