您问题的要点在您定义索引的那一行。在create table
声明,您应该使用此语法使用它:
CREATE TABLE `DatabaseMGR`
(
`databaseID` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`primCat` INT UNSIGNED NOT NULL,
`databaseName` VARCHAR(20),
UNIQUE KEY (`databaseID`),
PRIMARY KEY (`databaseID`),
INDEX `ix_databaseID` (`databaseID`) # Note the change on this line
)ENGINE = InnoDB;
然而,在MySQL primary key
列在默认情况下得到的指标:
create table table_name (
...
index `INDEX_NAME` (`INDEX_COLUMN`)
);
所以,你可以通过改变你的代码如下解决您的问题,这样你就可以完全省去了线的结果在下面的代码:
CREATE TABLE `DatabaseMGR`
(
`databaseID` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`primCat` INT UNSIGNED NOT NULL,
`databaseName` VARCHAR(20),
UNIQUE KEY (`databaseID`),
PRIMARY KEY (`databaseID`)
)ENGINE = InnoDB;
为了提高更多:
databaseID
已经是primary key
,所以你不必做定义它再次unique
,因为:primary key
= unique
+ not null
- 由于MySQL是不区分大小写,您应该不使用骆驼案件名称。所以,而不是
databaseID
,更好地说。你可以经历更多的命名约定,尽管我不会在这里提及。
因此对于决赛桌认定中,我建议:
CREATE TABLE `database_mgr`
(
`database_id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`prim_cat` INT UNSIGNED NOT NULL,
`database_name` VARCHAR(20),
PRIMARY KEY (`databaseID`)
)ENGINE = InnoDB;
为什么你要在同一列3个指标主要是足够 – Mihai
你需要把INDEX databaseID以()为其他键 – user993553