В чем проблема? Извините, я новичок в этом - PullRequest
0 голосов
/ 13 октября 2019

Я просто тестирую, но мой первый код не работает.

CREATE TABLE `Accounts`.`Registry` ( `Username` VARCHAR(16) NOT NULL ,
                                     `Password` VARCHAR(16) NOT NULL ,
                                     `First Name` INT(20) NOT NULL , 
                                     `Last Name` INT(20) NOT NULL , 
                                     `Gender` INT(1) NOT NULL , 
                                     `ID` INT NOT NULL AUTO_INCREMENT , 
PRIMARY KEY (`Password`, `First Name`, `Last Name`), 
UNIQUE (`ID`(1000)),
UNIQUE (`Username`)) ENGINE = MyISAM;

Ошибка

#089 - Incorrect prefix key, the used length is longer than the key part, or the storage engine doesnt support unique prefix keys

Ответы [ 2 ]

3 голосов
/ 13 октября 2019

Это должно быть причиной ошибки UNIQUE (ID(1000)) Попробуйте это.

CREATE TABLE Accounts.Registry ( 
    Username VARCHAR(16) NOT NULL , 
    Password VARCHAR(16) NOT NULL , 
    First Name INT(20) NOT NULL , 
    Last Name INT(20) NOT NULL , 
    Gender INT(1) NOT NULL , 
    ID INT NOT NULL AUTO_INCREMENT , 
    PRIMARY KEY (Password, First Name, Last Name), 
    UNIQUE (ID), 
    UNIQUE (Username)) ENGINE = MyISAM;
0 голосов
/ 13 октября 2019

Как уже упоминалось в комментарии и другими, удалите UNIQUE (`ID` (1000)).

Для повышения производительности создайте таблицу как Innodb, а другая полезная информация, представленная ниже

Int, хранит значениякак числа с диапазоном от -2147483648 до 2147483647.

First Name & Last Name изменяется на VARCHAR(20).

Gender, вы можете изменить на TINYINT.

CREATE TABLE `Accounts`.`Registry` (
    `ID` INT NOT NULL AUTO_INCREMENT,
    `Username` VARCHAR(16) NOT NULL,
    `Password` VARCHAR(16) NOT NULL,
    `First Name` INT(20) NOT NULL,
    `Last Name` INT(20) NOT NULL,
    `Gender` TINYINT(1) NOT NULL,
    PRIMARY KEY (`ID`),
    UNIQUE (`Username`)
)  ENGINE=Innodb;
...