您問題的要點在您定義索引的那一行。在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