Ошибка MySQL с использованием обратных кавычек
У меня есть некоторые проблемы с этим фрагментом кода MySQL, который не хочет быть исправленным
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 `databaseID`
)ENGINE = InnoDB;
Это говорит о том, что в строке 1 есть ошибка с регулярной ошибкой "проверьте синтаксис mysql на правильность использования" в ответ на "использование". Я что-то упускаю? Я новичок в SQL, поэтому я мог упустить что-то очевидное.
Благодарю.
1 ответ
Основным вопросом для вашей проблемы является строка, в которой вы определяете индекс. В create table
заявление, вы должны использовать его с этим синтаксисом:
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`),
INDEX `ix_databaseID` (`databaseID`) # Note the change on this line
)ENGINE = InnoDB;
Однако в MySQL primary key
По умолчанию столбец получает индекс, поэтому вы можете полностью пропустить эту строку, что приводит к следующему коду:
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
лучше сказатьdatabase_id
, Есть еще соглашение об именах, которое вы можете пройти, хотя я не буду здесь упоминать.
Итак, для определения финального стола я предлагаю:
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;