Подтвердить что ты не робот

Что не так с моим SQL здесь? # 1089 - Неправильный префиксный ключ

CREATE TABLE `table`.`users` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `username` VARCHAR(50) NOT NULL,
    `password` VARCHAR(50) NOT NULL,
    `dir` VARCHAR(100) NOT NULL,
    PRIMARY KEY (`id`(11))
) ENGINE = MyISAM;

Я получаю ошибку #1089 - Incorrect prefix key и не могу понять, что я делаю неправильно. Помогите, пожалуйста!

4b9b3361

Ответ 1

В определении PRIMARY KEY вы использовали (id(11)), который определяет префиксный ключ - то есть первые 11 символов должны использоваться только для создания индекса. Префиксные ключи действительны только для типов CHAR, VARCHAR, BINARY и VARBINARY, а поле id - int, следовательно, ошибка.

Используйте PRIMARY KEY (id), и все будет в порядке.

Ссылка MySQL здесь и прочитайте из параграфа 4.

Ответ 2

Если вы используете графический интерфейс, и вы по-прежнему получаете ту же проблему. Просто оставьте значение размера пустым, первичный ключ по умолчанию имеет значение 11, с этим вы должны быть в порядке. Работал с Bitnami phpmyadmin.

Ответ 3

Это

ПЕРВИЧНЫЙ КЛЮЧ (id (11))

автоматически генерируется phpmyadmin, изменяется на

ПЕРВИЧНЫЙ КЛЮЧ (id)

.

Ответ 4

Существует простой способ сделать это. Это может быть не экспертный ответ, и он может работать не для всех, но для меня это было.

Снимите флажки всех основных и уникальных флажков, создайте простую таблицу.

Когда phpmyadmin (или другое) показывает структуру таблицы, сделайте столбец основной данной кнопкой.

Затем нажмите изменить и отредактируйте настройки тех или иных колонок, таких как "уникальный" и т.д.

Ответ 5

CREATE TABLE `table`.`users` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `username` VARCHAR(50) NOT NULL,
    `password` VARCHAR(50) NOT NULL,
    `dir` VARCHAR(100) NOT NULL,
    PRIMARY KEY (`id`(11))
) ENGINE = MyISAM;

Изменить на

CREATE TABLE `table`.`users` (
        `id` INT(11) NOT NULL AUTO_INCREMENT,
        `username` VARCHAR(50) NOT NULL,
        `password` VARCHAR(50) NOT NULL,
        `dir` VARCHAR(100) NOT NULL,
        PRIMARY KEY (`id`)
    ) ENGINE = MyISAM;

Ответ 6

Это работает для меня:

CREATE TABLE `users`(
    `user_id` INT(10) NOT NULL AUTO_INCREMENT,
    `username` VARCHAR(255) NOT NULL,
    `password` VARCHAR(255) NOT NULL,
    PRIMARY KEY (`user_id`)
) ENGINE = MyISAM;       

Ответ 7

Проблема для меня в phpMyAdmin. Я просто создал таблицу без const. Позже я изменил идентификатор на главный ключ. Затем я изменил идентификатор на Auto-inc. Это решило проблему.

ALTER TABLE `users` CHANGE `ID` `ID` INT(11) NOT NULL AUTO_INCREMENT;

Ответ 8

Когда вы указываете id в качестве первичного ключа, появляется всплывающее окно, и они спрашивают вас, сколько размеров этого первичного ключа. Таким образом, вы просто оставляете пустым, потому что по умолчанию установлено значение int. 11. Нажмите "ОК" на всплывающих окнах без ввода числа. в этом типе ошибок вы никогда не столкнетесь в будущем. Спасибо, 😊

Ответ 9

в соответствии с последней версией MySQL (phpMyAdmin), добавьте правильный ИНДЕКС при выборе первичного ключа. например: id [int] INDEX 0, если id - ваш первичный ключ и первый индекс. Или


Для вашей проблемы попробуйте этот

CREATE TABLE `table`.`users` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `username` VARCHAR(50) NOT NULL,
    `password` VARCHAR(50) NOT NULL,
    `dir` VARCHAR(100) NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE = MyISAM;

Ответ 10

У меня также была такая же проблема.
Решение для меня:

CREATE TABLE IF NOT EXISTS 'users' (
  'sr_no' int(11) NOT NULL AUTO_INCREMENT,
  'username' VARCHAR(50) NOT NULL,
    'password' VARCHAR(50) NOT NULL,
    'dir' VARCHAR(100) NOT NULL,
  PRIMARY KEY ('sr_no')
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

Я вставляю этот код в SQL и запускаю, он отлично работает.

Ответ 11

В моем случае я столкнулся с проблемой при создании таблицы из phpmyadmin. Для столбца id я выбираю основной вариант из раскрывающегося списка индекса и заполняю размер 10.

Если вы используете phpmyadmin, для решения этой проблемы снова измените параметр раскрывающегося списка индекса, после повторного выбора первичного параметра он попросит вас об этом, оставьте его пустым, и все готово.